Sovellus: Kolmion trigonometrisia ominaisuuksia

264 days ago by Lauri_Ruotsalainen

Sovellus: Kolmion trigonometrisia ominaisuuksia

Lauri Ruotsalainen, 2011

Sovelluksessa kolmion kulmat sijaitsevat yksikköympyrän kehällä. Käyttäjä voi vapaasti valita kolmion mittasuhteet kolmen parametrin avulla, jotka ovat ympyrän kehällä olevien kolmion kulmien sijainnit asteissa. Näin määriteltynä kolmio voidaan valita yhdenmuotoiseksi minkä tahansa mielivaltaisen kolmion kanssa. Ohjelman avulla voidaan määrittää kolmion kulmien suuruudet asteissa, sivujen pituudet sekä pinta-ala.

Sovellusta on mahdollista muokata esimerkiksi siten, että kolmion kulmapisteiden koordinaatit xy[i] syötetään ohjelmalle suoraan sen sijaan, että kulmapisteet määräytyvät yksikköympyrän kehältä astelukujen perusteella.

Kuva:

# 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