Discussion:
Bsp3 - projectionMatrix
(zu alt für eine Antwort)
Martin Rohner
2003-11-02 11:56:06 UTC
Permalink
Hallo,

ich komm bei der projectionMatrix einfach nicht weiter.

Wenn ich die projectionMatrix laut Formel 12-14 setzte, dann muss ich doch
nachher noch die Aktion
-> xp = xh/h bzw.
-> yp = yh/h
ausführen.

Aber wo????

In welcher Prozedur muss ich das machen? Auch noch in setupProjection? Oder
in getDeviceCoordinates?

Ich denke mal es muss in einer von den beiden gemacht werden, da ja etwa in
drawCross (Show this object's coordinate system) zwischen den beiden
Aufrufen nichts mehr steht, und diese ja auch richtig funktionieren soll.


lG
Martin
Ok, hab's mir jetzt angeschaut... du könntest ja trotzdem die Formel 12-14
verwenden und halt die Variablen die den Projection Reference Point
repräsentieren auf 0 setzen (origin = (0, 0, 0)).
Ciao,
Christoph
Tja, bin da wirklich auf der Leitung gestanden :-(
Häng nun leider aber schon wieder beim nächsten Problem, und zwar bei
setupProjection (double zvp)!
Wenn ich das aus dem Buch richtig gelesen habe, brauchen wir nicht die
Formel (12-14), sondern kommen wegen "Assume the projection reference
point
to be at the origin of
the viewing coordinate system" mit der Formel (12-18) aus. Nur wie
bringt
man diese Formel in eine Matrix Form, besser gesagt in die
projectionMatrix,
so dass man einen Punkt (x,y,z,w) nur noch damit multiplizieren muss, um
auf
(xp,yp,z,w) zu kommen (z und w muss ja nicht geändert werden, oder? Da
man
ja nur an x und y interessiert ist)?
Danke,
Martin
P.S.: Formel Angaben nach Ausgabe 2!
Henning Scharsach
2003-11-02 20:45:36 UTC
Permalink
Zitat aus den Kommentaren:

* - The transformation from projection coordinates to device
coordinates should be implemented in the method
CG1Canvas::getDeviceCoordinates().

das homogenisieren der projektiven Koordinaten (clip coordinates)
sollte also in getDeviceCoordinates stattfinden.

lg,

henning


On Sun, 2 Nov 2003 12:56:06 +0100, "Martin Rohner"
Post by Martin Rohner
Hallo,
ich komm bei der projectionMatrix einfach nicht weiter.
Wenn ich die projectionMatrix laut Formel 12-14 setzte, dann muss ich doch
nachher noch die Aktion
-> xp = xh/h bzw.
-> yp = yh/h
ausführen.
Aber wo????
In welcher Prozedur muss ich das machen? Auch noch in setupProjection? Oder
in getDeviceCoordinates?
Ich denke mal es muss in einer von den beiden gemacht werden, da ja etwa in
drawCross (Show this object's coordinate system) zwischen den beiden
Aufrufen nichts mehr steht, und diese ja auch richtig funktionieren soll.
lG
Martin
Ok, hab's mir jetzt angeschaut... du könntest ja trotzdem die Formel 12-14
verwenden und halt die Variablen die den Projection Reference Point
repräsentieren auf 0 setzen (origin = (0, 0, 0)).
Ciao,
Christoph
Tja, bin da wirklich auf der Leitung gestanden :-(
Häng nun leider aber schon wieder beim nächsten Problem, und zwar bei
setupProjection (double zvp)!
Wenn ich das aus dem Buch richtig gelesen habe, brauchen wir nicht die
Formel (12-14), sondern kommen wegen "Assume the projection reference
point
to be at the origin of
the viewing coordinate system" mit der Formel (12-18) aus. Nur wie
bringt
man diese Formel in eine Matrix Form, besser gesagt in die
projectionMatrix,
so dass man einen Punkt (x,y,z,w) nur noch damit multiplizieren muss, um
auf
(xp,yp,z,w) zu kommen (z und w muss ja nicht geändert werden, oder? Da
man
ja nur an x und y interessiert ist)?
Danke,
Martin
P.S.: Formel Angaben nach Ausgabe 2!
Christian Promintzer
2003-11-02 22:34:18 UTC
Permalink
Hallo,

Ich habe leider das gleiche Problem mit der ProjectionMatrix.
Wenn ich Formel 12-14 aus Auflage 2 mit zprp = 0 verwende, komme ich auf die
Matrix:

1 0 0 0
0 1 0 0
0 0 1 0
0 0 1/zvp 0

Wie solls dann damit weiter gehen ?
wie bringe ich den "homogenous factor" h = (0 - z ) / (0 - zvp) = z / zvp
ins spiel ?

Grüße
Christian
Post by Martin Rohner
Hallo,
ich komm bei der projectionMatrix einfach nicht weiter.
Wenn ich die projectionMatrix laut Formel 12-14 setzte, dann muss ich doch
nachher noch die Aktion
-> xp = xh/h bzw.
-> yp = yh/h
ausführen.
Aber wo????
In welcher Prozedur muss ich das machen? Auch noch in setupProjection? Oder
in getDeviceCoordinates?
Ich denke mal es muss in einer von den beiden gemacht werden, da ja etwa in
drawCross (Show this object's coordinate system) zwischen den beiden
Aufrufen nichts mehr steht, und diese ja auch richtig funktionieren soll.
lG
Martin
Ok, hab's mir jetzt angeschaut... du könntest ja trotzdem die Formel 12-14
verwenden und halt die Variablen die den Projection Reference Point
repräsentieren auf 0 setzen (origin = (0, 0, 0)).
Ciao,
Christoph
Tja, bin da wirklich auf der Leitung gestanden :-(
Häng nun leider aber schon wieder beim nächsten Problem, und zwar bei
setupProjection (double zvp)!
Wenn ich das aus dem Buch richtig gelesen habe, brauchen wir nicht die
Formel (12-14), sondern kommen wegen "Assume the projection reference
point
to be at the origin of
the viewing coordinate system" mit der Formel (12-18) aus. Nur wie
bringt
man diese Formel in eine Matrix Form, besser gesagt in die
projectionMatrix,
so dass man einen Punkt (x,y,z,w) nur noch damit multiplizieren muss, um
auf
(xp,yp,z,w) zu kommen (z und w muss ja nicht geändert werden, oder? Da
man
ja nur an x und y interessiert ist)?
Danke,
Martin
P.S.: Formel Angaben nach Ausgabe 2!
Martin Rohner
2003-11-02 23:06:30 UTC
Permalink
Post by Martin Rohner
Hallo,
Ich habe leider das gleiche Problem mit der ProjectionMatrix.
Wenn ich Formel 12-14 aus Auflage 2 mit zprp = 0 verwende, komme ich auf die
1 0 0 0
0 1 0 0
0 0 1 0
0 0 1/zvp 0
Wie solls dann damit weiter gehen ?
wie bringe ich den "homogenous factor" h = (0 - z ) / (0 - zvp) = z / zvp
ins spiel ?
Grüße
Christian
Also wenn ich es richtig verstanden habe, musst du in
CG1Canvas::getDeviceCoordinates() innerhabl der FOR Schleife dieses
"homogenisieren" implementieren.
Etwas einfacher ausgedrückt, du dividierst jeden x und y Wert durch den w
Wert (entspricht h).

lG
Martin
Christian Promintzer
2003-11-03 08:02:24 UTC
Permalink
Hallo Martin,

die division durch W in getDeviceCoordinates habe ich auch angenommen.

mir kommt allerdings vor ich muß irgendwo noch durch diesen homogenen faktor
z/zvp dividieren (12-15, 12-16).
in getDeviceCoordinates ist zvp aber nicht mehr bekannt...

wenn ich nur die matrix aus 12-14 mit zprp = 0 nehme und dann in
getDeviceCoordinates mit x = xp / w, y = yp / w homogenisiere kommt bei mir
leider nur schmarrn raus ;(

grüße
christian
Post by Martin Rohner
Post by Martin Rohner
Hallo,
Ich habe leider das gleiche Problem mit der ProjectionMatrix.
Wenn ich Formel 12-14 aus Auflage 2 mit zprp = 0 verwende, komme ich auf
die
Post by Martin Rohner
1 0 0 0
0 1 0 0
0 0 1 0
0 0 1/zvp 0
Wie solls dann damit weiter gehen ?
wie bringe ich den "homogenous factor" h = (0 - z ) / (0 - zvp) = z / zvp
ins spiel ?
Grüße
Christian
Also wenn ich es richtig verstanden habe, musst du in
CG1Canvas::getDeviceCoordinates() innerhabl der FOR Schleife dieses
"homogenisieren" implementieren.
Etwas einfacher ausgedrückt, du dividierst jeden x und y Wert durch den w
Wert (entspricht h).
lG
Martin
Loading...