Мне нужно перемещаться между (повернутым) объектом в flex вдоль x, y или z в качестве независимого наблюдателя. Движение относительно x, y работает нормально, но когда я иду по оси z, наблюдатель ведет себя так, как это было отдельно от системы xyz объектов и не идет прямо к объекту, но, например, по диагонали. Вот некоторый Tryout кода спасибо за помощьflex, 3d-объект перевод и вращение
Скриншота можно найти здесь 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;
Не ответ на ваш вопрос, но я настоятельно рекомендую взять хорошую книгу по 3D-графике и прочитать на матрицах трансформации. Это сэкономит вам много головных болей в долгосрочной перспективе. –
Я бы рекомендовал предоставить несколько скриншотов того, что вы хотите, и что это на самом деле. И, возможно, запускаемое приложение, поэтому нам легко проверить. @Rob Агар Есть ли у вас рекомендации по книге? – JeffryHouser
@ www.Flextras.com Трехмерная компьютерная графика Алана Уотта была выборкой группы, когда я получал удовольствие от концепций, но это было некоторое время назад: \ –