|
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
User_User JLI'ler
Anmeldedatum: 05.08.2004 Beiträge: 137
Medaillen: Keine
|
Verfasst am: 28.02.2006, 06:36 Titel: Kapitel 28 Drehung |
|
|
In Kapitel 28 (S. 431) wird bei der Drehung folgender Code angegeben:
switch(Movement)
{
// Drehung nach links
case TURN_LEFT:
m_fRotAngleY -= m_TurnSpeed;
usw.
Wenn ich mich (S. 431) im Koordinatenursprung befinde und in Richtung der x-Achse schaue, dann ist der Winkel 0. Drehe ich mich nach links um z.B. 90° bzw. PI/2, dann ist mein Winkel 90° bzw. PI/2. Infolgedessen müsste ich bei einer Linksdrehung einen Wert hinzuaddieren (und bei einer Rechtsdrehung abziehen) - oder? |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 28.02.2006, 13:38 Titel: |
|
|
bist du jetzt nur verwirrt, das da ein Minus steht?
Ich meien, ist doch eigentilhc kein großes Probelm, wenn DX halt die drehung gegen oder mit dem Uhrzeigersinn definiert hat, ist es eben so. Ob ich jetzt -5 nach links oder +5 nach rechts drehe macht ja keinen Unterschied.
Und selbst wenn es verwirrend sein sollte, testet man es halt kurz, das hat man doch in 2 sek raus und braucht es eh nur an ner Hand voll Stellen, weshalb das absolut kein Probem darstellen sollte. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 28.02.2006, 13:51 Titel: |
|
|
Außerdem hats die Mathematik schon so definiert
Wenn du ein Koordinatensystem mit x und y hast, dann ist der erste Quadrant der rechts oben, der zweite der links oben, ...
Und Winkel werden hier grundsätzlich als positiv definiert, wenn sie linksherum gehen _________________ 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 |
|
|
User_User JLI'ler
Anmeldedatum: 05.08.2004 Beiträge: 137
Medaillen: Keine
|
Verfasst am: 28.02.2006, 19:52 Titel: Drehung |
|
|
Mich hat in der Tat das Minuszeichen irritiert.
In der letzten Antwort stand:
"Und Winkel werden hier grundsätzlich als positiv definiert, wenn sie linksherum gehen."
Deshalb habe ich erwartet, dass m_TurnSpeed bei einer Linksdrehung hinzuaddiert wird.
In der vorletzten Antwort stand:
"Ich meien, ist doch eigentilhc kein großes Probelm, wenn DX halt die drehung gegen oder mit dem Uhrzeigersinn definiert hat, ist es eben so."
Ist es nicht! Wenn man sich folgenden Code anschaut (Buch S. 431):
// Berechnung der Blickrichtung in der x-z-Ebene
m_vLookAt.x = sinf(m_fRotAngleY) + m_vPosition.x;
m_vLookAt.z = cosf(m_fRotAngleY) + m_vPosition.z;
Wenn ich eine Seite eines rechtwinkligen Dreiecks in x-Richtung ausrechnen will, brauche ich Ankathete (also den Cosinus). Es müsste also heißen:
// Berechnung der Blickrichtung in der x-z-Ebene
m_vLookAt.x = cosf(m_fRotAngleY) + m_vPosition.x;
m_vLookAt.z = sinf(m_fRotAngleY) + m_vPosition.z;
Wenn ich einen Winkel im ersten Quadranten habe, dann ist der Winkelwert zwischen 0 und PI/2 und positiv. Deshalb ist der auf Seite 431 eingezeichnete Winkel positiv.
Der "Fehler" (falsches Vorzeichen) wird ausgeglichen (falsche Trigonometrische Funktionen). Nun habe ich kein Problem mit dem Code mehr. Es wäre allerdings leichter gewesen, wenn man allgemeine implizite Vereinbarungen, die man in der Mathematik verwendet, auch einhält. |
|
Nach oben |
|
|
DirectXer Dark JLI'ler
Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 28.02.2006, 19:56 Titel: |
|
|
naja, sowas wirst du oft sehen @User_User
viele Progammierer leiten sich, wenn sie das net auswendig kennen und gut in Mathe sin, die Formeln immer wieder neu her. Das muss net unbedingt 1:1 mit der Mathematik sein, es muss nur funktionieren. Da muss als Leser eben entweder ein gutes Backgroundwissen haben um das direkt zu erkennen und drauf zu achten oder man muss sich eben alles nochmal an Beispielen klarmachen |
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
|
Nach oben |
|
|
User_User JLI'ler
Anmeldedatum: 05.08.2004 Beiträge: 137
Medaillen: Keine
|
Verfasst am: 01.03.2006, 04:30 Titel: Nachtrag |
|
|
Nachtrag
Ob + oder - - Hauptsache es funktioniert - oder?
Nehmen wir an, ich schreibe eine Klasse CSpieler, welche den Spieler repräsentiert. Ich habe eine Variable Position, welche die Position des Spielers repräsentiert.
Angenommen ich speichere die Spielerposition mit den falschen Vorzeichen.
Nun erstelle ich eine Klasse CPersonenAusgabe, welche den Spieler grafisch ausgibt. Nach kurzer Zeit läuft mein Programm.
Einige Zeit später erstelle ich eine weitere Klasse CGegner1, welche einen Gegner darstellen soll. Diese Klasse enthält auch eine Variable Position, welche die Position des Gegners repräsentiert.
Ich übergebe die Klasse CGegner1 der Klasse CPersonenAusgabe. Oh, jedoch funktioniert der Code nicht. Ich muss etwas falsch gemacht haben, schließlich funktionierte vorher alles fehlerfrei!
Nach einiger Zeit stelle ich fest, dass die Klasse CPersonenAusgabe fehlerhaft ist. Ich ändere nun diese Klasse, aber nein, schon wieder läuft es nicht wie erwartet. |
|
Nach oben |
|
|
Dragon Super JLI'ler
Alter: 38 Anmeldedatum: 24.05.2004 Beiträge: 340 Wohnort: Sachsen Medaillen: Keine
|
Verfasst am: 01.03.2006, 13:51 Titel: Re: Nachtrag |
|
|
User_User hat Folgendes geschrieben: | Nachtrag
Ob + oder - - Hauptsache es funktioniert - oder?
Nehmen wir an, ich schreibe eine Klasse CSpieler, welche den Spieler repräsentiert. Ich habe eine Variable Position, welche die Position des Spielers repräsentiert.
Angenommen ich speichere die Spielerposition mit den falschen Vorzeichen.
Nun erstelle ich eine Klasse CPersonenAusgabe, welche den Spieler grafisch ausgibt. Nach kurzer Zeit läuft mein Programm.
Einige Zeit später erstelle ich eine weitere Klasse CGegner1, welche einen Gegner darstellen soll. Diese Klasse enthält auch eine Variable Position, welche die Position des Gegners repräsentiert.
Ich übergebe die Klasse CGegner1 der Klasse CPersonenAusgabe. Oh, jedoch funktioniert der Code nicht. Ich muss etwas falsch gemacht haben, schließlich funktionierte vorher alles fehlerfrei!
Nach einiger Zeit stelle ich fest, dass die Klasse CPersonenAusgabe fehlerhaft ist. Ich ändere nun diese Klasse, aber nein, schon wieder läuft es nicht wie erwartet. |
du hast eigentlich recht. Vieleicht schreibst du mal den Autor des Buches eine PM darüber. Ich denke er würde sich über Verbesserungsvorschläge freuen. _________________ Nur wenn man ein Ziel sieht, kann man es auch treffen.
___________
Mein Leben, Freunde und die Spieleentwicklung |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 01.03.2006, 15:41 Titel: |
|
|
An sich ist das Beispeil richtig. Allerdings missachtest du dabei, das Gegner und spieler einen Basisklasse Person haben, von der sie die Eigenschaften inklusiv Vorzeichen erben _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
User_User JLI'ler
Anmeldedatum: 05.08.2004 Beiträge: 137
Medaillen: Keine
|
Verfasst am: 05.03.2006, 17:02 Titel: Kapitel 28 Drehung |
|
|
Dragon hat folgendes geschrieben:
du hast eigentlich recht. Vieleicht schreibst du mal den Autor des Buches eine PM darüber. Ich denke er würde sich über Verbesserungsvorschläge freuen.
Wo finde ich die eMail-Adresse des Autors? |
|
Nach oben |
|
|
DirectXer Dark JLI'ler
Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 05.03.2006, 17:08 Titel: Re: Kapitel 28 Drehung |
|
|
User_User hat Folgendes geschrieben: | Dragon hat folgendes geschrieben:
du hast eigentlich recht. Vieleicht schreibst du mal den Autor des Buches eine PM darüber. Ich denke er würde sich über Verbesserungsvorschläge freuen.
Wo finde ich die eMail-Adresse des Autors? |
Dragon meinte eine PM für private message(deutsch, so wies auch im Fourm steht: PN). Dazu einfach oben bei der Linksammlung wo auch JLI-Wiki, FAQ, Suchen usw. steht, rechts neben Profil auf das klicken (norm: "Du hast keine neuen Nachrichten") und "neue Nachricht" wählen. Da dann bei Empfänger den namen eingeben usw., ähnlich wie beim Posten
Gruß DXer |
|
Nach oben |
|
|
51m0n JLI'ler
Alter: 33 Anmeldedatum: 06.01.2006 Beiträge: 167 Wohnort: Erkelenz Medaillen: Keine
|
Verfasst am: 05.03.2006, 17:10 Titel: |
|
|
hier
edit:
zu langsam-.- _________________ Teigwaren
heißen Teigwaren,
weil sie früher einmal Teig waren |
|
Nach oben |
|
|
|
|
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
|