• Create Account

#Actualmax343

Posted 05 November 2012 - 06:04 PM

Luckily for you, you don't need to visualize the 4D coords since you're working in RP^3.
If you're not into topology, then the easiest way to visualize the point is dividing by the last coordinate (assume nonzero) and treat it as a point in R^3, because points in RP^3 are equivalent that way. With this approach it's a bit hard to understand what the projection matrix actually does to points in RP^3, so you should work your way from bottom up, i.e. to derive the projection operation for an arbitrary projection plane in R^3 and see how to utilize the extra coordinate in RP^3 to make your equations "neat" (put them in a matrix).

Another way is to look at RP^3 as the set of all lines in R^4 that pass through the origin. What the projection matrix does, is just what any other matrix does, it rotates*scales*rotates those lines. Rotation is straightforward, scaling isn't. Scaling a set of lines in a singular way is like identifying subsets of lines (in a non-singular way you just pack them closer or farther apart).
For instance, if you have two different lines [x:y:z:w] and [x:y:z:w'] with w!=w', then scaling by [1,1,1,0] identifies these two lines. This correlates to projecting points in 3D space onto a plane, as many different points go to the same point on the plane.

Step 2, is pretty much like finding the intersection of the transformed lines with the hyperplane w=1, which results in a 3D point. But since we already identified some lines with others, we obtain points on some plane instead.

Also, a true projection matrix is indeed singular with a zeroed last column, as is yours. Projection matrices in graphics applications are a bit different, as they also compute the local coordinates of the point on the projection plane (up to the division factor) and preserve the depth information. However, these two operations have nothing to do with the projection per se.

#1max343

Posted 05 November 2012 - 05:45 PM

Luckily for you, you don't need to visualize the 4D coords since you're working in RP^3.
If you're not into topology, then the easiest way to visualize the point is dividing by the last coordinate (assume nonzero) and treat it as a point in R^3, because points in RP^3 are equivalent that way. With this approach it's a bit hard to understand what the projection matrix actually does to points in RP^3, so you should work your way from bottom up, i.e. to derive the projection matrix for an arbitrary projection plane in R^3 and see how to utilize the extra coordinate in RP^3 to make your equations "neat".

Another way is to look at RP^3 as the set of all lines in R^4 that pass through the origin. What the projection matrix does, is just what any other matrix does, it rotates*scales*rotates those lines. Rotation is straightforward, scaling isn't. Scaling a set of lines in a singular way is like identifying subsets of lines (in a non-singular way you just pack them closer or farther apart).
For instance, if you have two different lines [x:y:z:w] and [x:y:z:w'] with w!=w', then scaling by [1,1,1,0] identifies these two lines. This correlates to projecting points in 3D space onto a plane, as many different points go to the same point on the plane.

Step 2, is pretty much like finding the intersection of the transformed lines with the hyperplane w=1, which results in a 3D point. But since we already identified some lines with others, we obtain points on some plane instead.

Also, a true projection matrix is indeed singular with a zeroed last column, as is yours. Projection matrices in graphics applications are a bit different, as they also compute the local coordinates of the point on the projection plane (up to the division factor) and preserve the depth information. However, these two operations have nothing to do with the projection per se.

PARTNERS