Discussion:
getDeviceCoordinates()
(zu alt für eine Antwort)
Xandi
2003-11-13 16:03:41 UTC
Permalink
Wahrscheinlich eine blöde Frage aber ich steh gerade voll auf der
Leitung:
Warum wird an getDeviceCoordinates() eigentlich zweimal transVertices
übergeben?? Anscheinend ist es ja komplett egal ob ich in der Methode
jetzt die einzelnen Punkt Koordinaten mit in[].x = ... oder mit
out[].x = ... verändere.
Bitte um Aufklärung
MFG
Xandi
Chris Chiu
2003-11-13 16:43:46 UTC
Permalink
Post by Xandi
Wahrscheinlich eine blöde Frage aber ich steh gerade voll auf der
Warum wird an getDeviceCoordinates() eigentlich zweimal transVertices
übergeben?? Anscheinend ist es ja komplett egal ob ich in der Methode
jetzt die einzelnen Punkt Koordinaten mit in[].x = ... oder mit
out[].x = ... verändere.
Bitte um Aufklärung
Naja, man könnte getDeviceCoordinates() auch mit zwei verschiedenen
Parametern aufrufen. Das eine ist der Input, das andere der Output. Aber da
man das Ergebnis sowieso im selben Array haben will, kann man auch das selbe
Array beim Aufruf verwenden.

In getDeviceCoordinates() ist die Unterscheidung zwischen output array und
input array wahrscheinlich eine Design-Frage. Es kann ja sein, dass man mal
das Ergebnis in ein anderes Array haben möchte als den Input.

Übrigens meinst du den Aufruf von getDeviceCoordinates() in
CG1Object::transform()? Wie kommst du da drauf, dass man zweimal
transVertices übergibt? Ich mein, es ist nicht falsch, aber transform() ist
ja eigentlich leer, und alles was da drin ist, liegt an dir zu
implementieren... klingt für mich irgendwie so als ob das jetzt eine Frage
über deinen eigenen Programmcode war.

Ciao,
Christoph
***@cg.tuwien.ac.at
Xandi
2003-11-14 09:06:12 UTC
Permalink
Post by Chris Chiu
Übrigens meinst du den Aufruf von getDeviceCoordinates() in
CG1Object::transform()? Wie kommst du da drauf, dass man zweimal
transVertices übergibt? Ich mein, es ist nicht falsch, aber transform() ist
ja eigentlich leer, und alles was da drin ist, liegt an dir zu
implementieren... klingt für mich irgendwie so als ob das jetzt eine Frage
über deinen eigenen Programmcode war.
Hi ist jetzt schon klar, habs schon selbst programmiert aber eben die
transform() Methode an Hand von drawCross() implementiert.
Ich hab jetzt noch ein Problem und komm nicht drauf:
Bin ganz sicher, daß getDeviceCoordinates(), die ProjectionMatrix und
die viewMatrix richtig sind, es funktioniert auch alles nur wenn ich
rotiere (egal um welche Achse und was für ein Transformation Mode
eingestellt ist) wird das Objekt immer schmäler bis es nur mehr ein
Strich ist.(Nach ca. 10 Rotationen) Wenn ich zB um die Y-Achse rotiere
werden die X und Z Werte immer kleiner. Wo kann da der Fehler liegen??
Skalieren und Translationen funktionieren perfekt.
MFG Xandi
Chris Chiu
2003-11-14 09:36:20 UTC
Permalink
Wie sehen bei dir die Rotationsmatrix von rotateX(), rotateY(), rotateZ()
aus von CG1Matrix4x4 aus? Schon genau überprüft ob sich da nicht irgendwo
ein Fehler eingeschlichen hat (sin statt cos, z.B.)?

Hast du auch schon gecheckt welche Datentypen du verwendest (double, float,
ev. Konvertierungsfehler)?

Das wären die primären Dinge die mir dazu einfallen, woran das liegen
könnte.

Ciao,
Christoph
Post by Xandi
Post by Chris Chiu
Übrigens meinst du den Aufruf von getDeviceCoordinates() in
CG1Object::transform()? Wie kommst du da drauf, dass man zweimal
transVertices übergibt? Ich mein, es ist nicht falsch, aber transform() ist
ja eigentlich leer, und alles was da drin ist, liegt an dir zu
implementieren... klingt für mich irgendwie so als ob das jetzt eine Frage
über deinen eigenen Programmcode war.
Hi ist jetzt schon klar, habs schon selbst programmiert aber eben die
transform() Methode an Hand von drawCross() implementiert.
Bin ganz sicher, daß getDeviceCoordinates(), die ProjectionMatrix und
die viewMatrix richtig sind, es funktioniert auch alles nur wenn ich
rotiere (egal um welche Achse und was für ein Transformation Mode
eingestellt ist) wird das Objekt immer schmäler bis es nur mehr ein
Strich ist.(Nach ca. 10 Rotationen) Wenn ich zB um die Y-Achse rotiere
werden die X und Z Werte immer kleiner. Wo kann da der Fehler liegen??
Skalieren und Translationen funktionieren perfekt.
MFG Xandi
Loading...