I am having trouble spinning objects about the z axis when theey have
already been rotated.

In my code I am working with a cube which I can rotate horizontally or
vertically. I have the code working to select the correct axis for
rotation, however if I have rotated the cube about the Y-axis, so that
the Z and X axes have swapped places, rotating with cube.rotationZ
results in exaxtly the same effect as cube.rotationX, ie. rotating
around the 'depth' axis as the user sees it.

Below is the code for the rotations. targetX, targetY and targetZ are
defined numbers containing the rotations we are trying to achieve. It
is only possible for one if the three rotations to occur at any one
time ('spinning' controls this).

function onEnterFrame( e:Event ):void {
        //rotate cube about x-axis
        if (targetX != cube.rotationX) {
                trace("rotationg about X");
                cube.rotationX*=5;
                cube.rotationX+=targetX;
                cube.rotationX/=6;
                //snap to position when close
                if (cube.rotationX<(targetX+accuracy)&&cube.rotationX>(targetX-
accuracy)) {
                        cube.rotationX = targetX;
                        spinning = false;
                }
        }
        //rotate cube about y-axis
        if (targetY != cube.rotationY) {
                trace("rotationg about Y");
                cube.rotationY*=5;
                cube.rotationY+=targetY;
                cube.rotationY/=6;
                //snap to position when close
                if (cube.rotationY<(targetY+accuracy)&&cube.rotationY>(targetY-
accuracy)) {
                        cube.rotationY = targetY;
                        spinning = false;
                }
        }
        //rotate cube about z-axis
        if (targetZ != cube.rotationZ) {
                trace("rotationg about Z");
                cube.rotationZ*=5;
                cube.rotationZ+=targetZ;
                cube.rotationZ/=6;
                //snap to position when close
                if (cube.rotationZ<(targetZ+accuracy)&&cube.rotationZ>(targetZ-
accuracy)) {
                        cube.rotationZ = targetZ;
                        spinning = false;
                }
        }

        view.render();
}

In an effort to debug this, I have removed this code from my
enterFrmae event, and replaced it with a simple cube.rotationZ += 2;
This works fine when the cube hasn't been modified in any way, but if
i first apply a y-rotation of 90, the same issue described above
occurs.

Reply via email to