In detail:
=============================================================
// Next line i can't understand ->
tempInvW2 = 1.0f/tempW2;
i only know that this is a faktor for the z coord because the screen has only x/y but i don't know
why 1.0f and why the variable name is tempInv like Invers ?

This line is clearly:
*pScreenX = (1.0f + (tempX2*tempInvW2))*0.5f*screenwidth;

This line seems me wrong:
*pScreenY = (1.0f - (tempY2*tempInvW2))*0.5f*screenheight;
==> i would say:
*pScreenY = (1.0f + (tempY2*tempInvW
because the viewport coordinates are from -1/-1 to 1/1 and the screen coords are beginning in the left top corner at 0/0 therefore transform -1/-1 & 1/1 to 0/0 & 2/2 ?!

W is the scaling factor for the viewport. Dividing by it will get you into screen-relative space. 1.0/W is pre-calculating the inverse so that a multiply can be used -- it is only used twice, but still faster to calculate the inverseW once and multiply against it, rather than dividing twice (yes, division is THAT BAD).

The - is because the 0,0 in 3D screen coords is usually the BOTTOM left, need to flip Y to get it to the TOP left.

As you say, generated view coordinates will be in the range of [-1,1] so for x:
1 + [-1,1] => [0,2] * 0.5 => [0,1]
and for y:
1 - [-1,1] => [2,0] * 0.5 => [1,0]
thus flipping the Y axis on the screen properly.

Multiplying by height/width then gets into screen pixels.

d

0

Featured Post

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

http://www.flipcode.com/cgi-bin/msg.cgi?showThread=18June2001-PlottingA3DPointOnA2DScreen&forum=askmid&id=-1

W is the scaling factor for the viewport. Dividing by it will get you into screen-relative space. 1.0/W is pre-calculating the inverse so that a multiply can be used -- it is only used twice, but still faster to calculate the inverseW once and multiply against it, rather than dividing twice (yes, division is THAT BAD).

The - is because the 0,0 in 3D screen coords is usually the BOTTOM left, need to flip Y to get it to the TOP left.

As you say, generated view coordinates will be in the range of [-1,1] so for x:

1 + [-1,1] => [0,2] * 0.5 => [0,1]

and for y:

1 - [-1,1] => [2,0] * 0.5 => [1,0]

thus flipping the Y axis on the screen properly.

Multiplying by height/width then gets into screen pixels.

d