Previous | Next --- Slide 42 of 64
Back to Lecture Thumbnails
nick

Homogenous coordinates seem very similar to the projection operation we performed during the first lecture, where we converted points in the xyz coordinates to uv coordinates. Is this a valid connection to make? And if so, what is the nature of the relationship between projections and homogenous coordinates?

keenan

Yes, absolutely. Good observation. The fundamental connection between projections and homogeneous coordinates it that by dividing by the homogeneous coordinate you're basically saying, "all points along a line are equivalent." In the case of a camera projection, all the points that the eye might see along a particular ray through space are equivalent, and get mapped to the same point on the image plane. We'll talk about this kind of thing a lot in our lecture on coordinate transformations; if you're interested now you can check out the slides from last year.

nick

Thanks for the slides! They made the connection pretty clear. When will we be going over this in class?

keenan

Looks like September 14 (the whole schedule has now been added to the course home page).

nick

Thank you!

Emtwelve

Out of these mappings, are either of them used to create 2.5D games (or is it the process of transforming one to the other used to create 2.5D games)? Raycasting (https://en.wikipedia.org/wiki/Ray_casting) was a technique used to emulate a 3D view in retro first person shooters such as DOOM, Wolfenstein 3D, and Marathon. Are projective coordinates the key thing we need in order to create these 2.5D games, or is it like: an affine transformation takes a coordinate in 3D space and maps them to a 2D plane?

keenan

Ray casting is basically a very slow way to compute a projection, for very simple geometry. :-) There, you literally march along the ray until you hit something. Next week Stelian will talk about a more modern way to do this, by directly computing the projection of vertices onto the screen, then intelligently performing rasterization to account for perspective distortion.

That being said, if you still want to do it the old-school way, here's a ray caster in 256 lines of JavaScript. (I'm just going to assume the guy is headed to the kitchen to slice a tomato.)