 |
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Fallen JLI MVP


Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 30.08.2003, 20:43 Titel: |
|
|
Was genau macht der bei meiner Funktion falsch hab das mal bei mir getestet, mit den Änderungen die ich beschrieben habe funktioniert alles bestens. Must eben nur drauf achten das die Winkel als Grad ausgegeben werden.
Zu deiner Frage: diese Quadranten habe ich bei meiner Funktion berücksichtigt. |
|
Nach oben |
|
 |
X-FILE Super JLI'ler
Anmeldedatum: 12.07.2003 Beiträge: 349
Medaillen: Keine
|
Verfasst am: 30.08.2003, 21:25 Titel: |
|
|
Hallo,
vorausgesetzt ich habe das richtig verstanden und deine Aenderung bezog sich auf den Funktionsaufruf, passiert folgendes.
Es gibt vier Winkelquadranten, die entweder von 270 - 360° oder von 90 - 180° reichen. Ok. Soweit noch ned so schlimm
Problematisch allerdings wirds, wenn man sich in einem Quadranten bewegt. Dort wechselt das Objekt seine Richtung nicht mehr beim Hin-und Zurueck auf selbem Vektor, da der Winkel ja eigentlich der gleiche bleibt.
Aber das groeßte Problem bleibt, dass sich das Objekt total in die falsche Richtung orientiert.
Ich brauche zwar den Winkel in Bogenmaß, aber das macht ja nix, weil ichs ja dann beim benutzen umrechnen kann, wenn ich das richtig sehe.
Funktioniert also leider nicht so richtig zuverlaessig, weil sich das Objekt ja immer in die Richtung ausrichten sollte, in die ich geklickt habe. *seufz*
Hast du es im 2D oder 3D-Bereich benutzt? Obwohl es keinen Unterschied machen sollte  |
|
Nach oben |
|
 |
Fallen JLI MVP


Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 30.08.2003, 21:32 Titel: |
|
|
Habs schon mal in beiden genutzt da aber immer nur auf der 2d ebene (Funktion nimmt ja auch nur 2 koordinaten an ).
Kann dir ja mal ein schnelles Programm schreiben wo es funktioniert wenn du willst (in 10 min hab ich es dann hochgeladen und geproggt).
Wie gesagt bei mir funktioniert das ganze, vieleicht habe ich deine antwort auch nicht ganz verstanden:
Funktioniert also leider nicht so richtig zuverlaessig, weil sich das Objekt ja immer in die Richtung ausrichten sollte, in die ich geklickt habe.
Genau das macht aber die Funktion rufst du sie falsch auf ?? schick mir mal dein Codefragment davon. _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
 |
X-FILE Super JLI'ler
Anmeldedatum: 12.07.2003 Beiträge: 349
Medaillen: Keine
|
Verfasst am: 31.08.2003, 00:24 Titel: |
|
|
Hi,
ok ich mach das so im 3D-Raum, aber nur in einer Ebene. Nimmt ja nur zwei Achsen wie du schon sagst :
Code: |
Aufruf:
RotationY = (absf(RotToAngle(Start.x, Start.z, GoTo.x, GoTo.z) - 360));
|
Naja und der Rest is ja wie schon bereits ausgiebigst diskutiert Einzig rufe ich den Wert dann als Bogenmaß auf. Also RotationY * D3DX_PI/180. Daran sollte es aber nicht hapern?
Also ich habs grad mal probiert, ohne die lineare Bewegung. Von 100 Klicks gehen genau 2-3 in die annaeherungsweise Richtung.
Wenn du mal ein Bsp. parat hast waere das super.
Danke...
Nachfrage: Der Algo, den ich als Ersatz hatte. Was sagst du dazu? Problematisch wegen der Quadranten hmm? Nur so aus Neugier.  |
|
Nach oben |
|
 |
Manuel87 Mini JLI'ler
Anmeldedatum: 28.07.2003 Beiträge: 33
Medaillen: Keine
|
Verfasst am: 31.08.2003, 10:49 Titel: Hilfe naht! |
|
|
Hi!
Wenn ich dein Problem richtig verstehe willst du eine Rotation in einer Ebene!
Ich gehe mal von einer 2d Welt aus, auch wenn du 3d willst, so kann ich dir das besser erklären! Nimm am besten 2 Vectoren (von mir aus auch normalisierte Vectoren):
einen für dein sprite und einen für den Zielvector denn du ja leicht berechnen kannst.
Nun rechne von beiden die Grad aus. Dann schau noch welcher weg länger ist: links vorbei oder rechts vorbei!Und dann rotier!
ISt jetzt sicher kompliziert aber ich werd schau, wenn du noch hilfe brauchst code ich dir ein kleines 2d Beispiel Programm. Brauch dann nur deine E-MAil Adresse!
c u! |
|
Nach oben |
|
 |
Fallen JLI MVP


Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 31.08.2003, 10:51 Titel: |
|
|
Hab deinen Algo mal kurz überflogen sieht schon recht toll aus, aber wie du sagtest ist es Problematisch wegen den Quadranten.
Hier das Beispiel (Schnelles bastel ich lieber in Borland der Code ist trotzdem verwendbar):
www.dragonfx.de/download/winkel.zip
Und hier mal meine Umwandlungsfunktion von GradinBogenmaß (was deiner auch entsprechen würde:
Code: |
inline double DegToRad(double grad) {return 6.283185307/360*grad;} |
_________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
 |
X-FILE Super JLI'ler
Anmeldedatum: 12.07.2003 Beiträge: 349
Medaillen: Keine
|
Verfasst am: 31.08.2003, 12:57 Titel: |
|
|
Hallo an euch beide,
"Hilfe naht"?? Is ja nett
So @FallenAngel84. Ich hab mir dein Demo mal angekuckt. Das Problem ist, dass das Ding das gleiche macht wie bei mir auch. Also gehe ich mal davon aus, dass ich all das richtig verstanden habe. Auch gleicht dein Code bis auf die Umrechnung meinem. Hmmm.....
Da dein Punkt keinen "Schnippel" hat, an dem man die Ausrichtung erkennen kann und in anbetracht der Tatsache das obiges zutrifft, denke ich, dass der Fehler im setzen des Winkels liegt. Oder in der Umgebung. Vielleicht auch in der Ausrichtung des Modells.
Nehmen wir das Bild hier. Der aeußere Kreis repraesentiert die Ergebnisse der moeglichen Winkel der RotToTarget-Funktion, der innere Kreis jedoch repraesentiert die moeglichen Winkel, die das Modell kennt. Wenn man das sieht, merkt man wo der Fehler liegen muesste, weil das Modell ja die Winkel 303°, die ja sowohl links oben, als auch rechts oben moeglich sind, falsch interpretiert und sich falsch ausrichtet
Da ist was bei mir falsch, oder ein genereller Denkfehler... vielleicht hilft das ja zur Illustration...
Tut mir echt leid, dass ich das Problem so breitwaelze Wenns nur an der Mathematik laege...  |
|
Nach oben |
|
 |
Fallen JLI MVP


Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 31.08.2003, 13:17 Titel: |
|
|
Also beio meinem Beispiel wird obern beim Programmtitel die Ausrichtung angezeigt, aber dein Problem scheint es zu sein die Ausrichtung auf deinem Objekt sichtbar zu machen und nicht nur den Winkel zu bekommen, kann das sein ?
Und do richtig verstehe ich dein Bild nicht ?
Der äussere Ring soll die ZielZuWinkel Funktion sein oder ?
Und der innere Ring die möglichen Werte deines Objekts ? _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
 |
X-FILE Super JLI'ler
Anmeldedatum: 12.07.2003 Beiträge: 349
Medaillen: Keine
|
Verfasst am: 31.08.2003, 15:13 Titel: |
|
|
Ja genau. Der aeußere Ring gibt die Moeglichen Winkel der Funktion von dir bei mir wieder. Der innere Ring ist das, was das Objekt versteht.
Dem Objekt die Winkel beizubringen is kein Thema, aber es ist eben sehr begrenzt, wg. oben gezeigtem Winkel. Auch bei deinem Beispiel gibts ja immer "nur" einen Abschnitt an Winkeln. Und da liegts glaube ich. Und da das Objekt den Winkel 303° oder 160° immer gleich interpretiert kommts eben auch zu den Fehlern wenn ich rumklicke.
Nur was dagegen machen is die Frage?? |
|
Nach oben |
|
 |
Fallen JLI MVP


Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 31.08.2003, 15:19 Titel: |
|
|
Also macht im gesammten dein Objekt die Probleme da es die Winkel nicht korrekt umwandelt ?
Wie soll der das was falsch machen und wie ???
Berechnest du die Endtransformation nicht richtig ? Zeig mal ? _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
 |
X-FILE Super JLI'ler
Anmeldedatum: 12.07.2003 Beiträge: 349
Medaillen: Keine
|
Verfasst am: 31.08.2003, 15:59 Titel: |
|
|
Hmmm ich poste mal alles was damit zu tun hat:
Code: |
Objektintern:
Rotationsmatrizen:
D3DXMatrixRotationX(&RotMatrixX,m_RotX);
D3DXMatrixRotationY(&RotMatrixY,m_RotY);
D3DXMatrixRotationZ(&RotMatrixZ,m_RotZ);
D3DXMatrixIdentity(&RotMatrix);
D3DXMatrixMultiply(&RotMatrix, &RotMatrix, &RotMatrixX);
D3DXMatrixMultiply(&RotMatrix, &RotMatrix, &RotMatrixY);
D3DXMatrixMultiply(&RotMatrix, &RotMatrix, &RotMatrixZ);
D3DXMatrixMultiply(&m_WorldMatrix, &RotMatrix, &TransMatrix);
D3DXMatrixTranslation(&TransMatrix, m_vPosition.x, m_vPosition.y, m_vPosition.z);
D3DXMatrixMultiply(&m_WorldMatrix, &RotMatrix, &TransMatrix);
m_lpD3DDevice->SetTransform(D3DTS_WORLD, &m_WorldMatrix);
Coder fuer die Drehung:
RotationY = (absf(RotToAngle(m_MeshPos.x, m_MeshPos.z, HitVec.x, HitVec.z) - 360));
|
So. Der Rest steht ja so in etwa eh schon hier. Die Variable lege ich hier mal der Einfachheit halber direkt mit m_RotY hin. Eigentlich veraendere ich diese nicht direkt, sondern ueber eine andere Variable, da es unterschiedliche Klassen sind, aber egal.
Das Einzige ist noch, dass ich
Code: | m_RotY * D3DX_PI/180 |
aufrufe, aber das wirds ja nicht sein. m_MeshPos ist ein Vektor, der zum geklickten Zeitpunkt die Stelle (nicht den Klick) des Meshes im 3D-Raum wiederspiegelt und HitVec ist der Vektor, der die Stelle des Klicks im Raum wiedergibt.
Tja. Bei all dem, kommt dann eben obiges Kreisverhaeltnis raus. Was er genau falsch macht noch:
1 Beispiel:
Ich klicke (vom Kreis oben her gesehen) rechts oben in Richtung Ecke. Der Winkel der rauskommt ist in etwa 330°. Das Objekt dreht sich auf 330°, jedoch liegen die 330° ja im unteren rechten Quadranten vom Objekt aus gesehen. Ergo dreht es sich ja korrekterweise dahin.
2 Beispiel:
Ich klicke in die linke obere Haelfte Richtung Ecke. Der Winkel der dort besteht ist natuerlich auch 330° in etwa. Also bleibt das Objekt auch in der 330°-Ausrichtung, was ja aber falsch ist.
Ich glaub jetzt wirds recht deutlich, worans hapert
Hab ich mich schon fuer deine Zeit bedankt? |
|
Nach oben |
|
 |
Fallen JLI MVP


Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 31.08.2003, 16:08 Titel: |
|
|
Ja das Problem hast du gut erklärt aber wieso der das nicht richtig ausgibt verstehje ich auch nicht. Hab bei mir die Funktion getestet (das Beispielprogramm) aber er zeigt bei mir immer den richtigen Winkel an. Ob es an der math.h liegt kann ich auch nicht sagen.
Kommt der Fehler den du Beschrieben hast nun bei deinem Prog oder bei meinem Prog vor wenn bei meinem dann schreib mal du ein Prog will mal sehen ob da was anderes passiert.
Ich verstehe das echt nicht warum der bei dir einen fast falschen Wert rausbekommt bei mir funktioniert alles korrekt ???????  _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
 |
X-FILE Super JLI'ler
Anmeldedatum: 12.07.2003 Beiträge: 349
Medaillen: Keine
|
Verfasst am: 31.08.2003, 16:55 Titel: |
|
|
Hmm witzig. Wenn das in der Fensterleiste Grad sind, dann macht dein Programm auch Fehler. Und zwar den gleichen wie bei mir. Allerdings in einem Bereich von 90 - 180°. Drueber raus gehts nich und drunter auch nicht
Beaengstigend? Wenn ja, dann schreib ich dir mal mein Programm inkl. 3D um und du testest mal... |
|
Nach oben |
|
 |
Fallen JLI MVP


Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 31.08.2003, 17:02 Titel: |
|
|
Ok werd dir ein 3d Prog basteln. Das Prog wird einen Soldat enthalten der sich zum Cursor dreht. _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
 |
Fallen JLI MVP


Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 31.08.2003, 17:41 Titel: |
|
|
Hier der Link zum Proj:
www.dragonfx.de/download/target.zip
Wenn du teile des Quellcodes sehen willst nur fragen, hätt ihn ja mitgesendet wäre aber zu gross geworden.
Die Maussteuerung ist simpel, aber es reicht aus für dieses Beispiel. _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
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
|