PDA

View Full Version : Trouble with converting to openGL coordinate syst.



glSpider
03-29-2009, 01:37 PM
Hi, i have a robot that uses a different coordinate system than openGL does and i have great difficulties in converting this to the openGL coordinate system. I like to draw some static elements (which use the robot coordinates) into openGL. The robot coordinate system has +Z pointing upwards, +Y pointing to the left, +X pointing backwards. Help is appreciated with this problem.

Jan
03-29-2009, 02:06 PM
Well, simply swap / negate the coordinates from your robot, before you put them into gl.

The transformation should look like this:

(x, y, z) -> (-y, z, x)

It would be easiest to write a little helper function, to do this:

vec3 MakeGLCoord (vec3 v)
{
return (vec3 (-v.y, v.z, v.x));
}

Then you can render your stuff like this:

vec3 vRobotPos = ...
vec3 glPos = MakeGLCoord (vRobotPos);

glVertex3f (glPos.x, glPos.y, glPos.z);


Hope that helps you. Though i do not guarantee that i got the transformation correct ;)

Jan.

ephtracy
03-29-2009, 10:01 PM
the OpenGL coordinate system is a right-hand system with

x pointing right
y pointing upward
z pointing toward you ( out of the screen )

so the coordinates form yours to OpenGL

x ( 1, 0, 0 ) -> x' ( 0, 0, -1 )
y ( 0, 1, 0 ) -> y' ( -1, 0, 0 )
z ( 0, 0, 1 ) -> z' ( 0, 1, 0 )

just like Jan have said