Trigonometrie - So lernen wir's!

Übersicht BlitzBasic FAQ und Tutorials

Neue Antwort erstellen

 

konstantin

Betreff: Trigonometrie - So lernen wir's!

BeitragMo, Jul 04, 2005 17:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Trigonometrie ist ein wichtiger Bestandteil der Spieleprogrammierung und außerdem fundamentales Wissen der Mathematik.
Viele tolle Sachen, wie zum Beispiel eine "GTA1/2 like Steuerung" funktionieren über Trigonometrie (spezieller: Sinus und Cosinus).

Einige (oder auch viele...) von euch sind in der Schule noch nicht so weit, als dass sie Trigonometrie ernsthaft im Unterricht bearbeitet haben, und deshalb gibt es immer wieder Missverstaendnisse in Sachen Cosinus, Sinus, Tangens, Cotangens & friends.

Die Trigonometrie beschaeftigt sich hauptsaechlich mit Verhaeltnissen in rechtwinkligen Dreiecken. Um das fuer die Mathe-Noobs unter euch verstaendlich zu machen: Wenn wir ein rechtwinkliges Dreieck mit den Seiten a, b und c haben, so koennen wir 6 Verhaeltnisse zwischen diesen Seiten bilden (was nichts anderes heisst, als sie zu teilen). Bei a, b und c waeren das also:

a/b, a/c, b/a, b/c, c/a, c/b

(schwupps, hier ein beispielbild, dass ich bei google fand)
user posted image

ihr seht, auch dieses dreieck hat die seiten a, b und c.
nun haben die seiten bestimmte pseudonyme, je nach dem wie sie im dreieck angeordnet sind. folgende gibt es:

Die Hypotenuse ist die laengste Seite eines rechtwinkligen Dreieck und liegt deshalb auch immer gegenueber dem rechten Winkel. Auf unserem Bild ist daher c die Hypotenuse.

Die Katheten sind die Seiten, die nicht Hypotenuse sind, und somit auch den rechten Winkel bilden. In unserem Fall sind a und b die katheten.

Nun gibt es noch Ankatheten und Gegenkatheten. Je nachdem, auf welchen Winkel man sich bezieht, sind es auch unterschiedliche Seiten. Wenn wir den Winkel an Punkt A den namen Alpha geben, so ist die Kathete, die von A zum rechten Winkel fuehrt, die Ankathete (sie liegt an der Hypotenuse und an Alpha gleichzeitig). Die Gegenkathete von Alpha ist dann die andere Kathete, sie liegt an der Hypotenuse, aber nicht am Winkel Alpha.

Ich habe vorhin schon was von Verhaeltnissen gebrabbelt. Diese Verhaeltnisse haben Namen. Die waeren:

Sinus von Winkel Alpha ist das Verhaeltnis von der Gegenkathete von Alpha zur Hypotenuse.

Cosinus von Winkel Alpha ist das Verhaeltnis von der Ankathete von Alpha zur Hypotenuse.

Tangens von Winkel Alpha ist das Verhaeltnis von der Gegenkathete von Alpha zur Ankathete von Alpha.

Cotangens von Winkel Alpha ist das Verhaeltnis von der Ankathete von Alpha zur Gegenkathete von Alpha.

(die reihenfolge ist wichtig! denn x/y != y/x)

Mit diesen Verhaeltnissen ist es moeglich, Dreiecke zu konstruieren, wenn man nur eine Seite und einen spitzen Winkel kennt.

Okok, viel geschwafelt, wofür brauchen wir das nun z.b. bei einer GTA Steuerung? Dafür gibt es Sinus und Cosinus am Einheitskreis. Wie das aussieht, sehr ihr hier.
user posted image

(ok, ich bin muede und bringe das schnell zu ende...)

wenn nun bei 0/0 unser spieler staende (in dem bild), und er mit dem Winkel Alpha irgendwo hin schaut, und er laufen will, dann muss folgendes passieren:

BlitzBasic: [AUSKLAPPEN]
x = x - Cos(Alpha)
y = y + Sin(Alpha)


hier noch schnell ein paar quellen, denn nach dem kurzen eindruck wollt ihr sicher noch mehr wissen Smile

  • Zuletzt bearbeitet von konstantin am Di, Jul 05, 2005 8:18, insgesamt einmal bearbeitet

Mo

BeitragMo, Jul 04, 2005 17:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Sehr cool... gefällt mir

Im nächsten Tut gehts dann den über Katheten-Höhensatz... und den Peripheriewinkelsatz natürlich Mr. Green

...im ernst gut verständlich Wink

Mo
500 Euro Studiengebühren... ich glaub ich zieh in den Wald!!!

Eine Floßfahrt die ist lustig... *sing* Wink

Triton

BeitragMo, Jul 04, 2005 22:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich bilde mir ein, es hier auch schonmal gut erklärt zu haben:

http://www.silizium-net.de/trigonometrie.htm
Coding: silizium-net.de | Portfolio: Triton.ch.vu

D2006

Administrator

BeitragMo, Jul 04, 2005 22:35
Antworten mit Zitat
Benutzer-Profile anzeigen
https://www.blitzforum.de/viewtopic.php?t=7493

Übrigens solltes du folgendes nochmal überdenken:

Alu hat Folgendes geschrieben:
BlitzBasic: [AUSKLAPPEN]
x = x + Sin(Alpha)
y = y - Cos(Alpha)


Ist einfach nur falsch und wiederspricht deiner Skizze.

Grundsätzlich:
COS -> X
SIN -> Y

MfG
D2006
 

konstantin

BeitragDi, Jul 05, 2005 8:19
Antworten mit Zitat
Benutzer-Profile anzeigen
D2006: 'tschuldigung. habs gerade auch gemerkt. war gestern etwas muede.

bruZard

BeitragDi, Jul 05, 2005 9:10
Antworten mit Zitat
Benutzer-Profile anzeigen
...und das Ganze nochmal an einem praktischen BlitzMax Beispiel erläutert:

Code: [AUSKLAPPEN]

Strict

Graphics 800,600,0,0
SetBlend ALPHABLEND

Type TPlayer
   Field x:Float
   Field y:Float
   Field a:Float
   Field s:Float
   Field image:TImage
   Field shadow:TImage
End Type
Global player:TPlayer = New TPlayer

player.x   = 500.0
player.y   = 400.0
player.a   = 0.0
player.s   = 0.0
player.image = LoadImage("car.png")
player.shadow = LoadImage("shadow.png")

SetClsColor 0,90,0

Repeat
   Cls
   
   If KeyDown(KEY_LEFT) Then player.a:-0.5
   If KeyDown(KEY_RIGHT) Then player.a:+0.5
   
   If KeyDown(KEY_UP) Then player.s:+0.01
   If KeyDown(KEY_DOWN) Then player.s:-0.05
   
   player.y:-(Cos(player.a)*player.s)
   player.x:+(Sin(player.a)*player.s)
   
   If player.s>2.0 Then player.s=4.0
   If player.s<0.0 Then player.s=0.0
   
   If Not KeyDown(KEY_UP) And Not KeyDown(KEY_DOWN) And player.s>0 Then player.s:-0.05
            
   SetRotation player.a
   DrawImage player.shadow,player.x-5.0,player.y-17.0
   DrawImage player.image,player.x-8.0,player.y-20.0
   SetRotation 0.0
   
   DrawText String(player.s),0,0
   Flip
   FlushMem()
Until KeyHit(KEY_ESCAPE)


Die Bilder zum Sample:
user posted image user posted image
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32

User posted image

dominik

BeitragDi, Jul 05, 2005 13:10
Antworten mit Zitat
Benutzer-Profile anzeigen
wir sind stolz auf euch. 8)
BB+ 1.41|Sempron 2.8|geforce fx5200|1GB DDR|XP home SP2 / prof.

Neue Antwort erstellen


Übersicht BlitzBasic FAQ und Tutorials

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group