JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

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

Kapitel 28 Drehung

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
User_User
JLI'ler



Anmeldedatum: 05.08.2004
Beiträge: 137

Medaillen: Keine

BeitragVerfasst am: 28.02.2006, 06:36    Titel: Kapitel 28 Drehung Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 28.02.2006, 13:38    Titel: Antworten mit Zitat

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


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 28.02.2006, 13:51    Titel: Antworten mit Zitat

Außerdem hats die Mathematik schon so definiert Wink

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 Wink
_________________
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
User_User
JLI'ler



Anmeldedatum: 05.08.2004
Beiträge: 137

Medaillen: Keine

BeitragVerfasst am: 28.02.2006, 19:52    Titel: Drehung Antworten mit Zitat

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



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 28.02.2006, 19:56    Titel: Antworten mit Zitat

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
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: 28.02.2006, 23:27    Titel: Antworten mit Zitat

Ups Embarassed
Dann macht das DX wohl andersrum Razz
_________________
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
User_User
JLI'ler



Anmeldedatum: 05.08.2004
Beiträge: 137

Medaillen: Keine

BeitragVerfasst am: 01.03.2006, 04:30    Titel: Nachtrag Antworten mit Zitat

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. Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Dragon
Super JLI'ler


Alter: 38
Anmeldedatum: 24.05.2004
Beiträge: 340
Wohnort: Sachsen
Medaillen: Keine

BeitragVerfasst am: 01.03.2006, 13:51    Titel: Re: Nachtrag Antworten mit Zitat

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. Wink

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 01.03.2006, 15:41    Titel: Antworten mit Zitat

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 Wink
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
User_User
JLI'ler



Anmeldedatum: 05.08.2004
Beiträge: 137

Medaillen: Keine

BeitragVerfasst am: 05.03.2006, 17:02    Titel: Kapitel 28 Drehung Antworten mit Zitat

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



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 05.03.2006, 17:08    Titel: Re: Kapitel 28 Drehung Antworten mit Zitat

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


Alter: 33
Anmeldedatum: 06.01.2006
Beiträge: 167
Wohnort: Erkelenz
Medaillen: Keine

BeitragVerfasst am: 05.03.2006, 17:10    Titel: Antworten mit Zitat

hier

edit:
zu langsam-.-
_________________
Teigwaren
heißen Teigwaren,
weil sie früher einmal Teig waren
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik Alle Zeiten sind GMT
Seite 1 von 1

 
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