我需要在作爲獨立觀察者的沿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