Lite uppfräschning av trigonometri och Python är aldrig fel. Här får vi lära oss hur man kan rita upp rätvinkliga trianglar – direkt i Python – om vi känner till två av sidorna. För detta kommer vi att använda modulerna turtle och math.

Python och trigonometri

För att kunna använda turtle-modulen behöver vi även installera TkInter för Python. Använder du Windows eller macOS är detta redan gjort, det medföljer nämligen standardinstallationen. Använder du däremot Linux behöver du oftast installera den själv. Följ nedanstående anvisningar för just din Linuxdistribution. Observera att nedanstående kommandon måste köras som root-användaren.

  • Debian/Ubuntu: apt-get update && apt-get install python3-tk
  • Fedora/CentOS/Red Hat: dnf install python3-tkinter

För den som är lite ringrostig när det gäller trigonometri och Pythagoras sats finns utmärkta artiklar på matteboken.se. Här hittar du en artikel för trigonometri och en för Pythagoras sats.

När du känner att du behärskar den matematiska delen är det dags att börja skriva kod. Det första vi måste göra är att inkludera modulerna för turtle och math. Vi passar också på att lägga till en shebang. Detta gör vi för att det ska gå att exekvera Pythonprogrammet direkt från kommandoraden, utan att behöva ange python3 framför. Det första stycket kod ser alltså ut som nedan:

#!/usr/bin/env python3

import turtle
import math

Nästa steg bör bli att fråga efter längden på sidorna som vi känner till. I detta programmet antar vi att vi vet längden på den närstående och den motstående kateten. Det är således dessa sidorna programmet ska fråga efter.

Vi kommer här att använda input() för att fråga efter sidorna. Observera att input()-funktionen alltid sparar det vi anger som strängar. Vi måste därför omvandla dessa till flyttal. Det gör vi med float().

narliggande = float(input("Ange längd på den närliggande kateten: "))
motstaende = float(input("Ange längd på den motstående kateten: "))

Nu när vi har längden på sidorna kan vi räkna fram vinkeln på hypotenusans spets. För detta använder vi den inversa tangenten. På engelska benämns detta arc tangent. På miniräknare och grafräknare ser tangenten ofta ut så här: $tan^{-1}$. Formeln för att räkna ut vinkeln är således $tan^{-1}(\frac{a}{b})$ där $a$ är den motstående sidan och $b$ den närliggande.

Funktionens namn i math-modulen är atan().

ANNONS FÖR VÅRA EGNA BÖCKER Demonerna på internet

vinkel = math.atan(motstaende/narliggande)

Nu kommer dock ett litet problem. Det är nämligen så att Python och math-modulen använder radianer istället för grader. Vi måste således göra om vinkeln till grader innan vi går vidare.

vinkel = math.degrees(vinkel)

Nästa steg blir att räkna fram längden på hypotenusan. Det kan vi göra med Pythagoras sats, som säger att $ \sqrt{a^2 + b^2} $ ger oss hypotenusans längd om $a$ är den motstående sidan och $b$ är den närliggande sidan. Kvadratroten i math-modulen heter sqrt().

hypotenusa = math.sqrt((motstaende**2)+(narliggande**2))

Två *-tecken är “upphöjt med” i Python.

Nu vet vi alla längder och vinklar vi behöver, så det är dags att skriva ut resultatet på skärmen.

print("Vinkeln är: %.2f grader" %(vinkel))
print("Hypotenusans längd är: %.2f" %(hypotenusa))

Nu kommer det riktigt roliga, nämligen att rita upp den rätvinkliga triangeln med turtle.

Vi börjar med att rita upp den närliggande kateten. Detta gör genom att gå framåt, forward, så långt som vi angav i början av programmet.

turtle.forward(narliggande)

Därefter måste vi vrida oss 90 grader åt vänster – det är ju rätvinklig triangel. Det gör vi med följande rad:

turtle.left(90)

Nu ritar vi ut den motstående sidan, på samma sätt som vi gjorde med den närliggande.

turtle.forward(motstaende)

Därefter måste vi vända oss 90 grader igen, så att “sköldpaddan” tittar åt rätt håll.

turtle.left(90)

Därefter vänder vi oss i exakt rätt vinkel, alltså den vinkel vi räknade fram tidigare för hypotenusans spets.

turtle.left(vinkel)

Till slut ritar vi ut hypotenusan med den längd vi fick fram genom Pythagoras sats.

turtle.forward(hypotenusa)

Nu måste vi även lägga in en extra rad för att inte fönstret med triangeln ska stängas så fort den ritat klart.

turtle.done()

Nu är det dags att testköra programmet! Som mått anger jag här 300 för den närliggande kateten och 150 för den motstående.

$> python3 trig.py 
Ange längd på den närliggande kateten: 300
Ange längd på den motstående kateten: 150
Vinkeln är: 26.57 grader
Hypotenusans längd är: 335.41

Nedanstående bild visas i ett separat fönster.

Triangel

Smidigt, inte sant? Nu slipper vi rita upp trianglarna själva; vi ber bara Python att göra jobbet åt oss. Modifiera gärna programmet så att det går att räkna ut de andra sidorna också.

Hela programmet visas i sin helhet här nedanför.

#!/usr/bin/env python3

# Importera de moduler vi behöver
import turtle
import math

# Fråga efter den närliggande och den motstående kateten
narliggande = float(input("Ange längd på den närliggande kateten: "))
motstaende = float(input("Ange längd på den motstående kateten: "))

# Räkna ut vinkeln med arc tan)
vinkel = math.atan(motstaende/narliggande)

# Python använder radianer istället för grader som standard, så
# omvandla till grader innan vi går vidare
vinkel = math.degrees(vinkel)

# Räkna ut hyptotenusan med hjälp av Pythoras sats
hypotenusa = math.sqrt((motstaende**2)+(narliggande**2))

# Skriv ut vinkeln och hypotenusans längd
print("Vinkeln är: %.2f grader" %(vinkel))
print("Hypotenusans längd är: %.2f" %(hypotenusa))

# Rita upp tringalen med Turtle-modulen
turtle.forward(narliggande)
turtle.left(90)
turtle.forward(motstaende)
turtle.left(90)
turtle.left(vinkel)
turtle.forward(hypotenusa)
turtle.done()