axis help?

Blitz3D Forums/Blitz3D Beginners Area/axis help?

mindstorms(Posted 2006) [#1]
I am trying to convert a program from c++ to blitz, and am doing a good job, but the program uses a different coordinate system than what Blitz uses. Lucky for me, it has a comment that says that the y axis points left, the z axis points up, and the x axis points into the screen. It also says that it has to convert this axis system from this to DirectDraw's coordinate system, which sounds like blitz's. It just says:


...//screen x = -y simulation
//screen y = z simulation
//screen z = x simulation

How would I go about converting the angles? (what i have done doesn't work, which is exaclty what it says, the same as for direction.) This is probably silly, but can someone help?


Bobysait(Posted 2006) [#2]
It is the common axis system used by many app => like 3dsmax .

you have to operate a -90° rotation on z axis ( from the original axis system ) then a +90° rotation on X axis ( from the original axis system ) , and you'll get the Blitz3D axis system.
But if you want to convert all the original C++ program, maybe you should just use a main pivot that will be parent from all entitys in the scene.
you rotate it from local axis to global axis using the pitch and roll i mentioned, and them, everything will be restored.
( but maybe it's not the best way... )


mindstorms(Posted 2006) [#3]
Thanks bobysait, do I need to do anything for the y axis, or do I just leave it alone? Also, does the z axis (and x) stay the z axis or does it change?

The c++ sim has only one entity, nothing to worry about...


Yeshu777(Posted 2006) [#4]
RotateEntity(ent,0,-90,0)?


mindstorms(Posted 2006) [#5]
Sorry guys, but I am not quite understanding this. I have tried to implement both of your ideas but have not been able to do so.

RotateEntity entity\yRot,entity\zRot-90,entity\xRot+90 doesn't seem to help...


b32(Posted 2006) [#6]
x axis points front => should be z
y axis points left => should be x
z axis points up => should be y
Maybe RotateEntity entity\yRot, entity\zRot, entity\xRot ?


mindstorms(Posted 2006) [#7]
Bram, your way works except the picth(my x, sim y) is reversed. It seems to work with negative y:

RotateEntity entity\mesh, -entity\yRot, entitity\zRot, entity\xRot

But after tumbling and spinning a bit, the y becomes reverse (this might be a different problem)


b32(Posted 2006) [#8]
Have you tried setting the optional [global] parameter for RotateEntity to 1 ?


mindstorms(Posted 2006) [#9]
It has always been set to true. I think the problem is that I need to figure out how apply the -y axis to the pitch...


b32(Posted 2006) [#10]
Hmm, and what if you replaced every "x" in the program by "y" and "y" by "z" and "z" by "x" ?
And is it only the "Y" that gets reversed after a while ? Does it get negative ? Are there any ^2 or ABS() operators used ? Or is the Y-angle affected by the other 2 axis ?


mindstorms(Posted 2006) [#11]
Only the y gets reversed, and all of the axis affect each other, meaning the x determines how much the y is and the z also determines how much the y is. (blitz coords)...The x axis should not be touched by the others, but affect the others.


I guess what I am really looking for is a sure way to convert between the axis, because I cannot tell if it is right or if there is a bug. I need to know that the axis conversion stuff is right, and can't think of a way to figure it out.