# Palauttaa pisteiden (x1,y1) ja (x2,y2) välisen etäisyyden
def etaisyys((x1,y1), (x2,y2)):
return sqrt((x2-x1)^2 + (y2-y1)^2)
# Palauttaa kolmion kulman suuruuden (radiaaneissa), kun kulman viereiset sivut a ja b sekä vastainen sivu c tunnetaan
def kulma(a,b,c):
return acos((b^2 + c^2 - a^2)/(2*b*c))
# Palauttaa kolmion pinta-alan, kun kulman alpha (radiaaneissa) viereiset sivut a ja b tunnetaan
def ala(alpha,a,b):
return 1/2*a*b*sin(alpha)
xy = [0]*3
@interact
def kolmio(a0 = slider(0, 360, 1, 30, label="A"),
a1 = slider(0, 360, 1, 180, label="B"),
a2 = slider(0, 360, 1, 300, label="C")):
# Kulmien koordinaatit
a = [math.radians(a0), math.radians(a1), math.radians(a2)]
for i in range(3):
xy[i] = (cos(a[i]), sin(a[i]))
# Kolmion kulmia (a,b,c) vastaavien sivujen pituudet (bc, ca, ab)
al = [etaisyys(xy[1], xy[2]), etaisyys(xy[2], xy[0]), etaisyys(xy[0], xy[1])]
# Kolmion kulmien (a,b,c) suuruus radiaaneissa.
ak = [kulma(al[0], al[1], al[2]), kulma(al[1], al[2], al[0]), kulma(al[2], al[0], al[1])]
# Kolmion pinta-ala
A = ala(ak[0], al[1], al[2])
# Yksikköympyrän piirtäminen
ympyra = circle((0,0), 1, aspect_ratio=1)
# Kolmion piirtäminen
kolmio = line([xy[0], xy[1], xy[2], xy[0]], rgbcolor="black")
kolmio_pisteet = point(xy, pointsize=30)
# Kulmien tunnukset, piirretään hieman etäälle pisteistä
a_tunnus = text("A", (xy[0][0]*1.07, xy[0][1]*1.07))
b_tunnus = text("B", (xy[1][0]*1.07, xy[1][1]*1.07))
c_tunnus = text("C", (xy[2][0]*1.07, xy[2][1]*1.07))
tunnukset = a_tunnus + b_tunnus + c_tunnus
show(ympyra + kolmio + kolmio_pisteet + tunnukset, figsize=[5,5], xmin=-1, xmax=1, ymin=-1, ymax=1)
html("$\\text{Kulma } A = %s^\\circ,$ $\\text{Kulma } B = %s^\circ,$ $\\text{Kulma } C = %s^\circ$"%(math.degrees(ak[0]), math.degrees(ak[1]), math.degrees(ak[2])))
html("$AB = %s,$ $BC = %s,$ $CA = %s$"%(al[2], al[0], al[1]))
html("$\\text{Pinta-ala} = %s$"%A)
|
|
Click to the left again to hide and once more to show the dynamic interactive window
|