JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=450925728ccccab9913ae0e918f409abMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Mit Gradzahl die Position der Vertexe berechnen?
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL
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

BeitragVerfasst am: 09.04.2003, 17:55    Titel: Mit Gradzahl die Position der Vertexe berechnen? Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 09.04.2003, 19:44    Titel: Antworten mit Zitat

LordHoto hat Folgendes geschrieben:
Nun will ich das man das Sprite belibig drehen kann,

heißt das bei 3D nich Modell? Wink
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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
LordHoto
JLI'ler


Alter: 35
Anmeldedatum: 27.03.2003
Beiträge: 137
Wohnort: Gelnhausen
Medaillen: Keine

BeitragVerfasst am: 10.04.2003, 09:21    Titel: Antworten mit Zitat

naja ich weiß nicht aber ein Flaches Bild mit vortransformierten Vertices würde ich Sprite nennen Very Happy .
Also von Mathematischen Formeln hab ich nicht so die Ahnung. Sad

MFG

LordHoto
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Christian Rousselle
Site Admin


Alter: 48
Anmeldedatum: 19.07.2002
Beiträge: 1630

Medaillen: Keine

BeitragVerfasst am: 10.04.2003, 09:52    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
LordHoto
JLI'ler


Alter: 35
Anmeldedatum: 27.03.2003
Beiträge: 137
Wohnort: Gelnhausen
Medaillen: Keine

BeitragVerfasst am: 10.04.2003, 10:07    Titel: Antworten mit Zitat

TempRot ist die Drehung? aber muss ich da jetzt einen Float wert angeben oder die Gradzahl?

MFG

LordHoto
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Christian Rousselle
Site Admin


Alter: 48
Anmeldedatum: 19.07.2002
Beiträge: 1630

Medaillen: Keine

BeitragVerfasst am: 10.04.2003, 10:11    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 10.04.2003, 11:45    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
LordHoto
JLI'ler


Alter: 35
Anmeldedatum: 27.03.2003
Beiträge: 137
Wohnort: Gelnhausen
Medaillen: Keine

BeitragVerfasst am: 10.04.2003, 11:47    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Kampfhund
Super JLI'ler


Alter: 42
Anmeldedatum: 20.07.2002
Beiträge: 408

Medaillen: Keine

BeitragVerfasst am: 10.04.2003, 14:55    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Christian Rousselle
Site Admin


Alter: 48
Anmeldedatum: 19.07.2002
Beiträge: 1630

Medaillen: Keine

BeitragVerfasst am: 10.04.2003, 15:06    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
LordHoto
JLI'ler


Alter: 35
Anmeldedatum: 27.03.2003
Beiträge: 137
Wohnort: Gelnhausen
Medaillen: Keine

BeitragVerfasst am: 10.04.2003, 15:20    Titel: Antworten mit Zitat

aber wenn ich es danach nicht auf 0 setze müsste sich das 'Sprite' doch immer drehen oder?

MFG

LordHoto
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 10.04.2003, 18:43    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
LordHoto
JLI'ler


Alter: 35
Anmeldedatum: 27.03.2003
Beiträge: 137
Wohnort: Gelnhausen
Medaillen: Keine

BeitragVerfasst am: 11.04.2003, 14:11    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 11.04.2003, 19:08    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
LordHoto
JLI'ler


Alter: 35
Anmeldedatum: 27.03.2003
Beiträge: 137
Wohnort: Gelnhausen
Medaillen: Keine

BeitragVerfasst am: 12.04.2003, 12:34    Titel: Antworten mit Zitat

Hä?Das kapier ich jetzt nicht... Sad

MFG

LordHoto
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL Alle Zeiten sind GMT
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum