I am looking for an algorithm for perspective/parallel projection of a 3d structure on a plane away from the structure. Inputs : plane, structure(assume a set of points in 3d space forming the surface), eye coordinates. Output required : projection contour (in terms of set of points in 3d space, these should ofcourse satisfy the plane equation). If you have any material or references regarding this algo, i would appreciate your help on it.

what is *specifically* that you want? I ask, because what you’re talking about (but might not know it?) is just matrix multiplication. the projection *algorithm* is just v’=Pv, where v’ and v is the proejcted poitn of the 3D world point respectively, and P is the projection matrix (which is either 4x4 if you’re talking about an OpenGL style projection matrix, or a 3x4 if you’re talking about a projection matrix that doesn’t worry about a z-buffer)

i mean, that’s all your post is really asking is how to project points, yer?

but, i muse to myself, you might be interested in rendering a scene in opengl and then converting the depth buffer into some kind of contour thing. this would fairly simply need to read the z-buffer and plot a pixel c§ <- f(z§) where p is a pixel after rendering, c§ is the colour of pixel p, z§ is the depth of p, and f() is a function returning some colour iff the depth is on a contour and another colour if not. this would filter your depth map into a set of contour lines.

but, that’s only a guyess of what you really want to do. what you seem to say is you just want to know how to project points (?!) or set up a camera matrix (?!) or something like that (?!)

cheers

John

i have a structure surface(a set of points in 3d space), an arbitrary point where the viewer is and a plane on which the structure needs to be projected perspectively as will be seen by the viewer. this projection is not to be the whole structure, only its outline(contour)(or silhoutte). Also, I have the rendering solution in opengl, but i need the algorithm for it, to get the analytical solution.

ok here it comes…

planeequation

Ax+By+Cz+D=0

point of viewer

x1;y1;z1;

point to project

x2;y2;z2;

projected point

x=x1-(x2-x1)*p
y=y1-(y2-y1) p
z=z1-(z2-z1)p
with
p=(Ax1+By1+C*z1+D)/(A*(x2-x1)+B*(y2-y1)+C*(z2-z1))

hope i have it correct

Chris