PDA

View Full Version : modelview matrix

04-15-2004, 03:22 PM
In my program, I change the modelview matrix with a matrix Q. Q, of course, is a 4x4 matrix because that's what the modelview matrix is. However, I want to apply Q to a vector representing a point P(x,y,z) which is 3 dimensions. What does the 4th variable in the modelview matrix represent? How would I rotate P by Q? Should I just multiply P by the upper-left 3x3 matrix in Q?

Rizo
04-15-2004, 06:05 PM
The forth value is 1 or zero depending on the whether you have a point or vector.

For vector [x y z 0]. Now add two vectors

v1+v2 = [x1 y1 z1 0]+[x2 y2 z2 0] = [x1+x2 y1+y2 z1+z2 0]

so addition of two vectors is a vector. What about a point and vector? We use a 1 to denote a point

v+p = [x y z 0]+[xp yp zp 1] = [x+xp y+yp z+zp 1]

which makes sense, a vector translate a point

What if we subtract two points?

p1-p2 = [x1 y1 z1 1]-[x2 y2 z2 1] = [x1-x2 y1-y2 z1-z2 0]

and we know the difference of two points is a vector.

Here is the interesting part. What if you add two points?

p1+p2 = [x1 y1 z1 1]+[x2 y2 z2 1] = [x1+x2 y1+y2 z1+z2 2],

With regular linear algebra, addition of two points just doesn't make sense. But how come we can take the average of two points?

midpoint = (p1+p2)/2

which is an addition of points. This is because we are taking a linear combination of the points. As long as the coefficient of the sum

c0p0 + c1p1 + ... cnpn

add to 1, we are okay. Going back to the addition of points [x1+x2 y1+y2 z1+z2 2], we need to normalize the weights so the 2 becomes 1
so [(x1+x2)/2 (y1+y2)/2 (z1+z2)/2 1] is the sum of p1+p2.

Note that the transformation matrices will equally work properly. In fact, without a system like this , we would not be able to represent translation with a matrix.

- Points are in a so called linear space
- Vectors are in vector space
but they are disjoint, we join them by adding a coordinate. This is called homogeneous (sp?) space or coordinate.

Note that, we cannot represent projections properly in this space, so there is another, called Gaussian space...

Hope this is helps.

04-16-2004, 12:34 PM
Thank you!