Jeg stod lidt i samme situation som dig, nemlig at man ikke lærte det før gymnasie niveau. Men det er muligt at lære uden. Og som et plus så gav det mig et 13 tal i 9-klasses prøverne i matematik.
Der er ikke svært at forklare hvad sinus og cosinus er, det svære er at forklare hvordan og hvorfor du kan bruge det.
Kan ikke huske hvornår man lærer det, men følgende ting skal du vide før du kan forstå de trigonometriske funktioner:
Retvinklet trekant - (en af vinklerne er 90 grader)
Hypotenuse - (den længste side i en retvinklet trekant.
Katete - (der er to af dem i en retvinklet trekant. - De er de to sider som ikke er hypotenusen.
Det hjælper nok at tegne dette på papir. Lad os sige du har en trekant.
Vinkel A er 30 grader.
Vinkel C, er 90 grader, og er til højre for Vinkel A. Og Vinkel B er ovenover Vinkel C.
Her er Sinus
for vinkel A simpelthen længden af den overfor-liggende side (a, eller CB) / med hypotenusen (den lange, AB). Dette giver et tal mellem 0 og 1. Og det er simpelthen Sinus.
Cosinus
for vinklen A er længden af den hosliggende (den ene af siderne der former vinklen og ikke er hypotenusen, dvs. AC) / med hypotenusen (AB). Dette giver også et tal mellem 1 og 0.
Hvad kan du så bruge det til? Jo internt i spil bruger du ofte x og y koordinater til at holde styr på hvor ting er. Men hvis de nu har en retning og en hastighed er det ikke så nemt. Her er det sin og cos kommer ind.
Lads os sige du har en "tank" i position A ligesom ovenover. Dens direction er 30. (GameMaker følger enhedscirklen så ikke noget problem). Så A er 30grader ligesom jeg skrev ovenover. Hypotenusen gør vi så lig dens hastighed. Så hvis dens hastighed er 4 er længden af hypotenusen 4. Hvis vi forestiller os at du har ternet papir f.eks. og du sætter A der hvor linier skærer og gør den til 30 grader. Og laver hypotenusen 4 lang. Og lav B også. Her vil linierne på papiret være ligesom en lineal for x og y koordinater. den linie hypotenusen former er den position "tanken" skal være i næste "step". Men som sagt så bruger tanken jo x og y koordinater til at gemme dens position. Kig her på CB. Dens længde passer jo med den højde der skal til for at få tanken "op" i dens nye position. Og kig på AC. Dette ligner den vandrette afstand, x-afstanden som skal til at få den der. Men man behøver ikke kende hypotenusen og CB for at finde sinus til vinkel A. Dette kan gøre rent matematisk. Og der findes typisk en funktion kaldet sin(vinkel). Dette er hvad man kan bruge Sinus og Cosinus til.
Lad os tage vores eksempel igen.
Vinkel A 30 grader, (dette er lig med tankens "direction" GM)
Vinkel C 90 grader og er til højre for vinkel A, fordi vinkel A er 30 grader.
Vinek B som er 60 grader på grund af A+B+C=180, samt ovenover C.
Hypotenusen er lig med hastighed ("speed" i GM), her 4.
Husk vi står i A. Og vi ved hvor hurtigt vi kører (hypotenusen). For at finde hvor meget vores x-position skal ændre sig, finder vi længden af AC/hypotenusen * hypotenusen. Siden AC/hypotenusen er lig med Cos(A) bliver det blot: Cos(A)*hypotenusen = 0.866 * 4 = 3.46
Det vil sige at hvis tanken bevæger sig med hastighed 4 i 30grader bliver det dens x koordinat den skal flytte sig med 3.46. (typisk er det dog ikke muligt at flytte en halv pixel i GM. Men det er der måder at løse på)
Det var hvor meget x-koordinat den skulle flytte sig. Hvad med y?
BC/hypotenusen * hypotenusen = sin(A) * hypotenusen = 0.5 * 4 = 2
Så der er det. Hvis du vil flytte tanken med hastighed 4, og 30 grader (i GM/på enhedscirklen), skal den flyttes 3.46 vandret og 2 lodret. Her (i GM skal det dog være -2 lodret, fordi der er større y punkt længere nede, i modsat til et normalt koordinatsystem.)
Hvis der er noget du vil have forklaret bedre så skriv.
Årsagen til at du ganger med pi og dividerer med 180 er fordi at funktioner i GM og "næsten alle" andre steder regner i radianer ligesom Kaare siger ovenover. (lidt ligesom kg vs. pund).
Indlæg senest redigeret d. 29.07.2009 11:22 af Bruger #14645