I kind of solved my problem.

I had to remove all freeflight movement commands and - using your suggestion - to write equivalents that used Euler angles to avoid discrepancies between the object angle and the rendered object osition.

The rotation was easy. I know how to make incremental rotation that works exactly the same way as TURN OBJECT and ROLL OBJECT.

The hardest part was to convert MOVE OBJECT, that is a freeflight command although it doesn't involve rotation - into something usable.

I was in need of Euler angle and movement commands that allowed me to move a 3D plain in the exact same way I would do with a 2D sprite. This is what I did:

function moveobject(obj,speed#,direction)

//this will define the direction to move the ob ject

if direction = 0 then amod = 0 //move forward

if direction = 1 then amod = 180 //move backwards

if direction = 2 then amod = 90 //move right

if direction = 3 then amod = 270 //move left

speed# = 1 //how much to move the object

x# = object position x(obj)

y# = object position y(obj)

angle# = object angle z(obj)

nx# = sin(angle#)*speed#

ny# = cos(angle#)*speed#

position object obj,x#+nx#,y#-ny#,0

endfunction

[/code}

To rotate objects in the same way you would with TURN, ROLL and PITCH, is easier - turn is Y axis, roll is Z axis and pitch is X axis. No mystery here

By the way, I need to know a single thing about geometry:

I know how to use SINE and COSINE, but I don't know how to use TANGENT, ARCSINE, HYPERBOLLIC SINE, et cetera. Simple examples are welcome - and brazilian poor schools and my laziness are to blame.

[size=+2]Forever and one[/size]