I have the x,y,z coordinats of a vector. X goes from left to right, Y from bottom to up and z into the screen. How can I calculate the projection of the vector on the screen?

In general, when you want the projection of a vector

on a plane, all you need to do is construct a new

vector that is the sum of the vector you have, and

the negative of the projection of the vector you have

to the plane’s normal vector. Does this make sense?

So if you have a vector A and a plane with normal

N, the vector that is resulted by projecting A on

the plane will be B = A - (A.dor.N)N, where B is the

new vector, .dot. represents a dot product operation,

and the quantity in parentheses is multiplying N.

To graphically project the vector you need to know

where the vector is located (assuming the origin of the

vector is not the (0,0,0) point), and you will need

to calculate the coordinates of the point on the

plane where the origin on the vector is projected.

To do this, write the equation of a line in 3D space

that has for slopes the direction cosines of the N

vector. Then, find the fourth coefficient of the

equation by substituting the coordinates of the

origin of the vector for the values x,y,z in the

equation of the line. Now you have all four coefficients,

and thus you have the equation of the line that goes

through the origin of the vector and is perpendicular

to the plane. Use this equation and the equation

of the plane to get the point on the plane where

the origin of the vector is projected (something

like that). It should be easy. Then, with vector

math you can display it.

Lengthy response, but it is all easy stuff!

I assume you know the plane formula, but I’ll post it anyway.

P is the point being evaluated, N is the normalized vector perpendicular to the plane.

//POP means Point On Plane

D=-(POP*N);

Plane formula:

//Multiply vectors P and N then add D

P*N+D = DistanceFromPlane;

If you were to add (POP*N) to D instead of (P*N) you would get zero, because D is actualy the negated version of (POP*N).

Now that you have the distance from the plane, all you have to do to project P onto the plane is this:

//create a new vector the length of

//DistanceFromPlane(DFP) in the direction of

//the normal on the plane

ProjVec=N.x*DFP + N.y*DFP + N.z*DFP

//subtracting ProjVec from P will place P on your plane

P=P-ProjVec;

Let me know if you have any questions.

Aaron

Thank you very much for your replies. I will study them all thouroughly. Of course more replies may come.

There is also always:

(X,Y,Z) -> (X,Y),

which is the orthographic projection; simple to code, easy to get started with.