我需要在作为独立观察者的沿x,y或z的flex(旋转)对象之间移动。 相对于x,y的运动工作正常,但是当我沿着z轴走时,观察者的行为与对象的xyz系统分开,并且不直接对象,而是以对角线为例。 下面是一些试用代码 感谢您的帮助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图形的好书并阅读变换矩阵。从长远来看,它将为您节省很多麻烦。 – 2011-03-28 11:36:02
我建议提供一些你想要它的截图以及它的实际内容。并且可能是一个可运行的应用程序,所以我们很容易测试。 @Rob琼脂你有任何书的建议? – JeffryHouser 2011-03-28 11:49:05
@ www.Flextras.com Alan Watt的3D计算机图形学是我在研究这些概念时的首选,但是那是前一段时间:\ – 2011-03-28 12:06:53