Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
LordHoto JLI'ler
Alter: 35 Anmeldedatum: 27.03.2003 Beiträge: 137 Wohnort: Gelnhausen Medaillen: Keine
|
Verfasst am: 09.04.2003, 17:55 Titel: Mit Gradzahl die Position der Vertexe berechnen? |
|
|
Hallo,
ich schreibe mir gerade eine Sprite Klasse für 3D
diese Arbeitet mit RHW Vertices.
Nun will ich das man das Sprite belibig drehen kann,
aber wie berechne ich jetzt bei einer z.B. 100° die
neue Position der Vertices?
EDIT : Die Drehung ist in einer FLOAT Variable gespeichert d.h. 1.0f = 360° und 0.0f = 0°
MFG
LordHoto |
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 09.04.2003, 19:44 Titel: |
|
|
LordHoto hat Folgendes geschrieben: | Nun will ich das man das Sprite belibig drehen kann, |
heißt das bei 3D nich Modell?
Meinst du mit deiner Frage, dass du die Position der gedrehten Polygone/Dreiecke herausfinden willst?
So was geht vielleicht mit Pythagoras. Du brauchst die ursprüngliche Entfernung eines Punktes zum Nullpunkt im Koordinatensystem. Diese Entfernung nimmst du dann beim gedrehten Modell als Hypothenuse. Ich weiß allerdings nich, wie man eine der Katheten ausrechnet. Vielleicht mit PI. _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
|
LordHoto JLI'ler
Alter: 35 Anmeldedatum: 27.03.2003 Beiträge: 137 Wohnort: Gelnhausen Medaillen: Keine
|
Verfasst am: 10.04.2003, 09:21 Titel: |
|
|
naja ich weiß nicht aber ein Flaches Bild mit vortransformierten Vertices würde ich Sprite nennen .
Also von Mathematischen Formeln hab ich nicht so die Ahnung.
MFG
LordHoto |
|
Nach oben |
|
|
Christian Rousselle Site Admin
Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 10.04.2003, 09:52 Titel: |
|
|
Mach dir das am besten am Einheitskreis klar. Du kannst in Abhängigkeit der Drehung die Verschiebung des Sprites in x,y mit Hilfe des Sinus/Cosinus berechnen. Nimm dir am besten ein Mathebuch, das ist das einfachste.
An sonsten kannst du die neue Position so berechnen:
Code: |
m_vPosition.x += cos(TempRot) * m_CurSpeed;
m_vPosition.y -= sin(TempRot) * m_CurSpeed;
|
Christian |
|
Nach oben |
|
|
LordHoto JLI'ler
Alter: 35 Anmeldedatum: 27.03.2003 Beiträge: 137 Wohnort: Gelnhausen Medaillen: Keine
|
Verfasst am: 10.04.2003, 10:07 Titel: |
|
|
TempRot ist die Drehung? aber muss ich da jetzt einen Float wert angeben oder die Gradzahl?
MFG
LordHoto |
|
Nach oben |
|
|
Christian Rousselle Site Admin
Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 10.04.2003, 10:11 Titel: |
|
|
Ja, dass ist die Rotation - die Sinus und Cosiuns Funktionen benötigen aber Bogenmaß, der vollständige Code sieht dann so aus:
Code: |
float TempRot = Rotation * PI / 180.0f; // Umrechnung, wenn du D3DX verwendest, kannst du auch D3DX_PI nutzen
// Rotation ist dann die Rotation in Grad.
m_vPosition.x += cos(TempRot) * m_CurSpeed;
m_vPosition.y -= sin(TempRot) * m_CurSpeed;
|
|
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 10.04.2003, 11:45 Titel: |
|
|
Kennt sich vielleicht jemand mit Sinus und Cosinus aus und kann mir des erklären? Das hatte ich nämlich noch nich in der Schule. _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
|
LordHoto JLI'ler
Alter: 35 Anmeldedatum: 27.03.2003 Beiträge: 137 Wohnort: Gelnhausen Medaillen: Keine
|
Verfasst am: 10.04.2003, 11:47 Titel: |
|
|
Also ich als hatte das auch noch nie...
[EDIT]
Muss ich eigentlich nach der Berechnung die Rotation wieder auf 0 setzen
oder muss ich die beibehalten?
[/EDIT]
MFG
LordHoto |
|
Nach oben |
|
|
Kampfhund Super JLI'ler
Alter: 42 Anmeldedatum: 20.07.2002 Beiträge: 408
Medaillen: Keine
|
Verfasst am: 10.04.2003, 14:55 Titel: |
|
|
bei einem Rechtwinkligen Dreieck gibt es 2 Katheten und eine Hypothenuse.
Die Hypothenuse liegt dem Rechten winkel gegenüber.
Umrechnen kann man mit hilfe des Pythagoras Satzes:
c^2 = a^2 + b^2
D.h das Quadrat der Hypothenuse ist gleich der summe der beiden Quadrate der Katheten.
Sinus Winkel = Gegenkathete / Hypothenuse
Cosinus Winkel = Ankathete / Hypothenuse
Tangens Winkel = Gegenkathete / Ankathete
Wenn man nun einen Winkel im Dreieck gegeben hat und die gegenkathete
diese Winkels ausrechnen möchte, dann kann man einfach den sinus des winkels mit der Hypothenuse multiplizieren:
sin Alpha = Gk / Hyp
Gk = sin Alpha * Hyp |
|
Nach oben |
|
|
Christian Rousselle Site Admin
Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 10.04.2003, 15:06 Titel: |
|
|
LordHoto hat Folgendes geschrieben: | Also ich als hatte das auch noch nie...
Muss ich eigentlich nach der Berechnung die Rotation wieder auf 0 setzen
oder muss ich die beibehalten?
|
Das kommt ein bischen drauf an, wie du sonst rechnest, aber im Prinzip behälst du die bei um addierst/subtrahierst Werte, wenn du dich drehst. |
|
Nach oben |
|
|
LordHoto JLI'ler
Alter: 35 Anmeldedatum: 27.03.2003 Beiträge: 137 Wohnort: Gelnhausen Medaillen: Keine
|
Verfasst am: 10.04.2003, 15:20 Titel: |
|
|
aber wenn ich es danach nicht auf 0 setze müsste sich das 'Sprite' doch immer drehen oder?
MFG
LordHoto |
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 10.04.2003, 18:43 Titel: |
|
|
Man hat ja die Modelle am Anfang des Programmes definiert und gesetzt bzw. geladen. Ich glaub bei jedem mal, wo du die Renderfunktion aufrufst wird das am Anfang des Programms definierte Modell genommen und mit den angegebenen Matrizen verschoben/gedreht.
<edit>
Bei 2D ists ja auch so. Man verschiebt das Sprite nicht einfach, sondern zeichnet es an dr verschobenen Stelle neu.
</edit> _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
|
LordHoto JLI'ler
Alter: 35 Anmeldedatum: 27.03.2003 Beiträge: 137 Wohnort: Gelnhausen Medaillen: Keine
|
Verfasst am: 11.04.2003, 14:11 Titel: |
|
|
aber :
m_vPosition.x += cos(TempRot) * m_CurSpeed;
m_vPosition.y -= sin(TempRot) * m_CurSpeed;
das wird doch die Position geändert oder?
MFG
LordHoto |
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 11.04.2003, 19:08 Titel: |
|
|
Hier wird die berechnete Position verändert und nur wenn du diese Werte als Rotationswinkel angibst, dreht sich auch das 'Sprite'.
Ich würde einfach nach der Rotation deren Winkelwerte übergeben und dann mit Co(sinus) die X-/Y-Koordinaten ausrechnen. _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
|
LordHoto JLI'ler
Alter: 35 Anmeldedatum: 27.03.2003 Beiträge: 137 Wohnort: Gelnhausen Medaillen: Keine
|
Verfasst am: 12.04.2003, 12:34 Titel: |
|
|
Hä?Das kapier ich jetzt nicht...
MFG
LordHoto |
|
Nach oben |
|
|
|