已知旋轉中心點(centerx,centery)、乙個物體、旋轉的半徑radius和角度angle。使用基本的三角學圍繞中心點放置物體,設定旋轉的角速度vr來控制旋轉角度的增加或減少。計算公式為:
angel+=v;
ball.x=centerx+math.cos(angle)*radius;
ball.y=centery+math.sin(angle)*radius;
多數情況下只知道物體的位置和中心點位置,可以使用如下公式計算當前的角度和半徑:
dx=ball.x-centerx;
dy=ball.y-centery;
angle=math.atan2(dy,dx);
radius=math.sqrt(dx*dx+dy*dy);
對於輕量級的計算單個物體的旋轉來說,此方法是可行的。但如果存在多個物體要旋轉,並且這些物體與中心旋轉點的相對位置可能是變化的,不使用常規的按角度和半徑的計算方法,使用座標旋轉公式:
x1=cos(vr)*x-sin(vr)*y;
y1=cos(vr)*y+sin(vr)*x
變數:
寫入幀迴圈中的**段為:
var x1:number=ball.x-centerx;
var y1:number=ball.y-centery;//旋轉前的x,y座標
var x2:number=cos*x1-sin*y1;
var y2:number=cos*y1+sin*x1;
ball.x=x2+centerx;
ball.y=y2+cntenry;
這種三角計算的方法比給予座標的旋轉來的高效。可以看到第一種方法在迴圈中要呼叫4個math函式,而且物體每迴圈一次都要呼叫這四個函式。而使用旋轉座標公式只需要在迴圈外面呼叫兩個math函式,不管有多少個物體只需要執行一次。 flash旋轉座標
關於flash的anglebounce 有角度回彈實現步驟 思想就是把問題歸結到我們可以解決的平面回彈,那麼就是將ball的速度 向量 旋轉,以及ball與側面起點的差額 向量 的旋轉,旋轉結束之後就速度發生改變,然後旋轉回來。1.獲得基本資訊 獲得角 正弦和余弦 var angle number ...
python旋轉座標系 四元數旋轉座標系
這個問題和 senderle給出的答案真的幫助了我的乙個專案。答案是最小的,涵蓋了乙個人可能需要執行的大多數四元數計算的核心。對於我自己的專案,我發現為所有操作分別使用函式並在每次需要時逐個匯入它們是很乏味的,所以我實現了乙個物件導向的版本。四元數.py import numpy as np fro...
球體旋轉座標推導
球體旋轉的座標公式為 旋轉x軸時,旋轉角度為 x x y ycos zsin z zcos ysin 旋轉y軸時,旋轉角度為 y y x xcos zsin z zcos xsin 旋轉z軸時,旋轉角度為 z z x xcos ysin y ycos xsin 上面的公式是從網上查到的,想要了解那幾...