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]