Мне нужно перемещаться между (повернутыми) объектами в изгибе вдоль x, y или z в качестве независимого наблюдателя.
Движение относительно x, y работает нормально, но когда я иду вдоль оси z, наблюдатель ведет себя так, как если бы он был отделен от системы xyz объектов и не идет прямо к объекту, но, например, по диагонали.
Вот некоторый пробный код
спасибо за помощь
Снимок экрана можно найти здесь http://i.stack.imgur.com/jyuhN.png
var dx1:Number=Math.cos(degToRad(currentZRotation))*xDiff;
var dy1:Number=-Math.sin(degToRad(currentZRotation))*xDiff;
var dy2:Number=Math.cos(degToRad(currentZRotation))*yDiff;
var dx2:Number=Math.sin(degToRad(currentZRotation))*yDiff;
xDiff=dx1+dx2;
yDiff=dy1+dy2;
var xyx:Number=Math.cos(degToRad(currentYRotation))*xDiff;
var aux:Number=Math.sin(degToRad(currentYRotation))*xDiff;
var xxy:Number=Math.sin(degToRad(currentXRotation))*aux;
var xxz:Number=Math.cos(degToRad(currentXRotation))*aux;
var yxz:Number=-Math.sin(degToRad(currentXRotation))*yDiff;
var yxy:Number=Math.cos(degToRad(currentXRotation))*yDiff;
var zyz:Number=0;
var zxy:Number=0;
var zyx:Number=0;
zxy=sign(Math.cos(degToRad(currentYRotation)))*Math.sin(degToRad(currentXRotation))*zDiff;
aux=Math.cos(degToRad(currentXRotation))*zDiff;
zyx=-sign(Math.cos(degToRad(currentXRotation)))*Math.sin(degToRad(currentYRotation))*aux;
zyz=Math.cos(degToRad(currentYRotation))*aux;
currentX += xyx+zyx;
currentY += yxy+zxy+xxy;
currentZ += zyz+xxz+yxz;