Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Mo Jul 07, 2025 22:48

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Vektor um bestimmte Achse rotieren
BeitragVerfasst: Mo Jul 26, 2010 21:18 
Offline
DGL Member

Registriert: Fr Jul 09, 2010 19:24
Beiträge: 12
Hi, ich benutze lwjgl und versuche einen Vektor um einen bestimmten Winkel zu rotieren. In der Dokumentation habe ich dafür keine vorgesehene Methode gefunden. Hat jemand dazu nen Codesnippet rumfliegen oder lust schnell was zu schreiben? Es gibt ja auch das Tutorial in dem bestimmte Matrizen beschrieben sind um um bestimmte Achsen zu drehen. Allerdings weiß ich nicht wie ich solche Matrizen in lwjgl erstelle.

Falls nicht ganz klar geworden ist was ich meine: Ich arbeite an dem Tutorial Objekt gedreht und dennoch nach vorne bewegt und suche etwas das folgenden Code aus dem Tutorial in Java bzw. lwjgl beschreibt.

Code:
 
 // Den Look-Vektor zuerst um die Z-Achse...
  RotateVector(LookVec, RotZAxis, -DegToRad(RotateZ));
  // ...um die Y-Achse...
  RotateVector(LookVec, RotYAxis, -DegToRad(RotateY));
  // ... und um die X-Achse drehen.
  RotateVector(LookVec, RotXAxis, -DegToRad(RotateX));


viele Grüße


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mo Jul 26, 2010 23:16 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
die Basisfunktionen wie glRotate, glTranslate und glScale erzeugen, bzw. verändern deine Worldmatrix.

Das ist im Tutorial_Matrix2 auch nochmal mit reichlich Bildern dargestellt. Wirf doch da nochmal einen Blick drauf.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mo Jul 26, 2010 23:21 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Also ich hab das jetzt nicht ausprobiert, aber nach einem Blick in die Doku würde ich sagen schau dir doch mal die rotate-Methoden der Klasse Matrix4f an:
http://www.lwjgl.org/javadoc/org/lwjgl/ ... rix4f.html

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Jul 27, 2010 09:52 
Offline
DGL Member

Registriert: Fr Jul 09, 2010 19:24
Beiträge: 12
Ok, dann speichere ich den LookVektor in einer Matrix. Wenn ich dann folgenden Befehl aufrufe:

Code:
lookVec.translate(new Vector3f(0, 1, 0));


ist dann der angegebene Vektor in der Matrix beschrieben? Dann könnte ich ja mir der rotate Methode von Matrix4f den Vektor drehen. Allerdings bekomme ich dann schwierigkeiten bei dem Teil:

Code:
PosVect[0] := PosVect[0] + (LookVec[0] * (Direction * 0.01));


Bei mir ist der LookVec ja jetzt eine Matrix, Direction habe ich erst mal weggelassen. Wie kann ich jetzt den X Wert meines Vectors der in einer Matrix gespeichert ist mit 0.1 multiplizieren? Und wie kann ich dann den Vektor PosVect mit der Matrix LookVec addieren?


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Jul 27, 2010 10:09 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Zitat:
Ok, dann speichere ich den LookVektor in einer Matrix.

Was verstehst du den unter LookVektor? Üblicherweise speichert man einen Vektor in einem Vektor ;)

Zitat:
lookVec.translate(new Vector3f(0, 1, 0));

Das erzeugt vom Prinzip eine Translationsmatrix die um den Vektor (010) verschiebt und multipliziert sie mit der Matrix lookVec. Die Ergebnis-Matrix steht dann wieder in lookVec.

Wenn du eine Roation oder eine andere Transformation auf einen Vektor/Punkt anwenden willst erstellst du erst eine Matrix und multiplizierst dann den Vektor mit dieser Matrix. Das geht mit der Methode Matrix4f.transform(). Die Methode braucht einen Vektor4f, d.h. du musst den 3D-Vektor um eine vierte Koordinate erweitern. Diese kannst du einfach auf 1.0 setzen.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Jul 27, 2010 10:39 
Offline
DGL Member

Registriert: Fr Jul 09, 2010 19:24
Beiträge: 12
Ok danke, aber wie genau weise ich den Spalten und Zeilen einer Matrix denn Werte zu? Das ist mir irgendwie noch schleierhaft.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Jul 27, 2010 10:49 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Eigentlich brauchst du dich darum nicht selbst kümmern, den dafür sind ja die Methoden rotate, translate, scale usw. da.

Ich kann dir aber gerne erklären wie die Werte in einer Matrix zustande kommen. Es ist sehr hilfreich, aber nicht notwendig zu wissen was da intern passiert. Wenn dich das interessiert einfach nochmal fragen. :)

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Jul 27, 2010 11:02 
Offline
DGL Member

Registriert: Fr Jul 09, 2010 19:24
Beiträge: 12
Ok, mal sehen ob ich das verstanden habe :)
Wenn ich einen Vektor drehen will, wende ich erst die rotate Methode auf eine Matrix an und benutze dann die transform Methode der Matrix auf meinen zu drehenden Vektor?


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Jul 27, 2010 11:35 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Zitat:
Wenn ich einen Vektor drehen will, wende ich erst die rotate Methode auf eine Matrix an und benutze dann die transform Methode der Matrix auf meinen zu drehenden Vektor?

Genau.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 7 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.015s | 17 Queries | GZIP : On ]