Grundläggande Trigonometrisk Matematik

Ofta, när man jobbar med mediaprogrammering, stöter man på matematiska problem som man vet det finns formler för som man lärt sig i grundskolan men inte riktigt kommer ihåg definitionen av. Vanligtvis är det trigonometriska problem som dyker upp när det gäller interaktiv och dynamisk 3D programering. Många gånger behöver man räkna ut avstånd och positioner utifrån givna vinklar eller vise versa.

Innan jag fortsätter så kan det vara bra att förstå lite grunder vad det som gör att denna matematik fungerar och att sin, cos och tan inte bara blir abstrakta formler som man slår upp i en tabellsamling eller hackar in i en miniräknare. Anledningen till att det funnits tabeller är att dom numeriska talen vid dessa beräkningar är långa flyttal (många decimaler).

I denna artikel kommer jag att använda detta tecken π för att representera talet pi.

Pythagoras sats

Summan av arean (ytan) på den lutande kvadraten (hypotenusan) är lika med summan av arean på den motstående och den närliggande kvadraten.

enhetscirkel

För att illustrera detta med siffror. Låt oss säga att längden a = 1 och längden b = 1. Längden på c blir (kom ihåg att det är genom ytor vi får fram resultatet):

c2 = 12 + 12

c = √2  ≈ 1,414213562373095

Ytan på den kvadraten som står på hypotenusan (c) är alltid summan av ytan på dom två andra kvadraterna.

pythagoras-bevis

Ovanstående figur bevisar detta faktum. Oavsett var den gula pricken befinner sig så kommer c2 alltid vara summan av a2 + b2.

Klicka här för att se en interktiv canvas animation som visar hur ytorna a + b relaterar till ytan c.

Med denna bild i åtanke så ser man möjligheterna att börja beräkna vinklar.

Källan till delar av detta kommer från en annan artikel jag skrivit på engelska som finns här:
https://www.heamedia.com/Documents/Geometry/A_Closer_Look_at_Root_Rectangles.html

(Den handlar mer om rottal än vad denna artikel kommer att handla om.)

 

Sinus och Cosinus Definitioner

Sinus och cosinus kan definieras genom vad som kallas för enhetscirkeln. Den är en cirkel med radien 1 och är centrerad vid origo (0,0). Vad som är viktigt att komma ihåg är att resultaten av vinkeln α alltid är i radianer (inte grader).

I nedanstående bild ser vi hur man kan använda sig av Pythagoras sats i enhetscirkeln. Notera dock att Pythagoras sats bara funkar i den 1:a kvadranten. när vinkeln α blir 90° eller (π/2)rad så är det inte längre en rätvinklig triangel.

enhetscirkel

Låt oss bryta upp det i lite mindre beståndsdelar.

enhetscirkel

 

t är längden av bågen som startar på den högra sidan och rör sig motsols. cos(t) och sin(t) ger x och y koordinaterna vid den röda pricken på bågen.

Enhetscirkeln Created by Hans E Andersson 0 -1 +1 +1 -1 Enhetscirkeln time cos(t) sin(t) t =

 

Några saker värt att notera

  • t rör sig runt cirkeln vilket betyder att sinus och cosinus värdena kommer att upprepas
  • Cosinus och sinus värden är alltid en siffra mellan 1 och -1
  • För varje t, så är punkten (cos(t), sin(t)) avståndet 1 från centrum
  • Omkretsen av enhetscirkeln är 2 x π
  • Vinkeln α beskrivs här i grader men kan lika gärna illustreras som t radianer

Det kan vara bra att rita upp denna enkla bild när man brottas med trigonometriska problem så att man har grunderna klara för sig.

Geometrisk definition

enhetscirkel

Bilden beskriver en rätvinklig triangel med vinkeln α. Hypotenusan är motstående sida till den räta vinkeln, i detta fall r. För enkelhetens skull betrakta r som siffran 1 utifrån enhetscirkeln där r är radien 1. Då är det lite lättare att förstå varför sin och cos alltid har ett värde mellan -1 och 1 samt hur dessa värden kan räknas fram om man inte har tillgång till miniräknare eller tabeller. (Vad som kan vara lite förvirrande och lätt att missa i programering är att resultatet av den beräknade vinkelns värde är i radianer (se nedan) som måste konverteras om man vill ha värdet i grader.)

sinus sin α = y / r sinus för en vinkel är kvoten av motstående katet och hypotenusan
cosinus cos α = x / r cosinus för vinkeln α är kvoten av närliggande katet och hypotenusan
tangens tan α = y / x tangens för vinkeln α är kvoten av motstående och närliggande katet
cosekant csc α = r / y
cosekant är inverterade värdet av sin α
sekant sec α = r / x
sekant, är inverterade värdet av cos α
cotangens cot α = y / r cotangens är inverterade värdet av tan α

Det finns en bra webbplats som beskriver alla möjliga former av matematiska problem (khanacademy). Khan har en ramsa eller formel för att komma ihåg hur sin, cos och tan förhåller sig till varandra som han kallar för:

SOH CAH TOA

SOH = sin = opposite (motstående) / hypotenusan
CAH = cos = adjacent (närliggande) / hypotenusan
TOA = tan = opposite (motstående) / hypotenusan

 

Radianer

Ofta används radianer i stället för grader i många 3D tillämpningar. Radianer är matematiskt sett ett mer naturligt sätt att beskriva en vinkel på än det mer artificiella måttet grader som vi använder till vardags.

Samma enhetscirkel kan användas för att förstå vad radianer är. Som bilden här nere visar så är vinkeln α samma som t radianer.

Det är 2 x π radianer hela varvet runt. 2 x π radianer = 360° (grader)

För att konvertera från grader till radianer, multiplicera grad med (2 x π) / 360 (eller π/180)

För att konvertera från radianer till grader, multiplicera rad med 360 / (2 x π) (eller 180/π)

enhetscirkel

Beräkna t utifrån x och y

t beräknas med hjälp av arc-tangent funktionen (i Flash AS3 Math.atan(), i Director atan()).

Eftersom y/x = -y/-x och y/-x = -y/x, Math.atan(y/x) (AS3) kommer att returnera samma värde i dom skuggade områdena enligt bilden här ovan samt samma värde i dom oskuggade kvadranterna. Math.atan() låter dig inte specificera vilken kvadrant som menas utan kommer alltid att returnera ett värde på den högra sidan av cirkeln. Detta betyder att värdet kommer att ligga mellan π/2 och -π/2.

Detta betyder att om x är negativt (ligger i dom vänstra kvadranterna) så måste pi läggas till resultatet för att få värdet av t.

Flash exempel

R.I.P.

Director Exempel

3D Lingo som snurrar ett klot i en cirkel

exitFrame me angleInRadians = ((pi/2)/segments) * currentYpos y = sin(angleInRadians) * radie x = cos(angleInRadians) * radie klot.transform.position = vector( y, x, 100 ) currentYpos = currentYpos + 1 cyl.pointAt(klot.worldPosition, vector(0,0,1)) mem.light[1].pointAt(klot.worldPosition, vector(0,0,1)) end

R.I.P.

Kort sammanfattning

Omkretsen på en cirkel = 2 * radien π (eller diametern * π)
halv cirkel = π

cos(0) = cos(0°) = 1 och sin(0) = sin(0°) = 0
cos(π/2) = cos(90°) = 0 och sin(π/2) = sin(90°) = 1
cos(π) = cos(180°) = -1 och sin(π) = sin(180°) = 0
cos(3π/2) = cos(270°) = 0 och sin(3π/2) = sin(270°) = -1

Radianer:

Omkretsen på enhetscirkel = 2 x π (ca 6.28318531)
1 rad = 360 / 2 x π = 180 / π /ca 57.29577951°)

http://en.wikipedia.org/wiki/Radians

Länkar

http://sv.wikipedia.org/wiki/Trigonometri

http://sv.wikipedia.org/wiki/Radian

http://sv.wikipedia.org/wiki/Cosinussatsen

 


"Matematik", Hans E Andersson: 2007-01-29 01:51:08, ändrad: 2024-03-27 23:30:01

 

Copyright © 2005 - 2024 HEAP. Alla rätter förbehållna. Integritetspolicy