PDA

View Full Version : BSP3:Musterlösung Matrix translate


Laessig
28-11-2002, 15:31
also der quellcode der musterlösung bereitet mir da einiges kopfzerbrechen:

z.b. beim skalieren

---------
public void scale(double x,double y, double z) {

double posX,posY,posZ;
posX=transformPointsMatrix.m[0][3];
posY=transformPointsMatrix.m[1][3];
posZ=transformPointsMatrix.m[2][3];
transformPointsMatrix.translate(-posX,-posY,-posZ);
....
}
----------

am anfang wird transformPointsMatrix mit der einheitsmatrix
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
instanziert.
dann wird also bei scale den posX,Y,Z werten die werte 0,0,0 zugewiesen und es passiert gar nix (mit posX=transformPointsMatrix.m[0][3] z.B.) sinnvolles.
liegt das daran daß die atoffs ohnehin schon im ursprung liegen (und daher nicht mehr dorthin bewegt werden müssen)?
und wenn ja wieso läßt man den translate teil nicht weg?


bin für alle erklärungen dankbar.
lg

Laessig
28-11-2002, 15:42
o.k., ich glaub ich habs.
am anfang liegt alles im ursprung, daher ist die translation auch wirkungslos (mit posX,Y,Z=0).
nach der ersten veränderung am objekt ist die matrix ebenfalls verändert und spuckt uns die richtigen werte aus um den punkt in den ursprung zurück zu bewegen.

:applaus:

dafür hab ich noch eine andere frage:
wieso brauch ich für punkte eine 4x4matrix und für normale eine 3x3?

asterix
28-11-2002, 19:22
@ Laessig

die punkte verschiebst du ja auch, in der 4x4 Matrix befindet sich die translate Methode, in der 3x3 gibt es keine Methode translate.

lg