將(x,y)座標中的點相對於(0,0)移動/「旋轉」x度的算法是什麼?例如,在下面的圖片中,我想要將點A移動到B,x度; A和(0,0)之間的距離應該在B和(0,0)之間相同。移動/旋轉點的算法
我需要在前端環境中執行JavaScript操作。
將(x,y)座標中的點相對於(0,0)移動/「旋轉」x度的算法是什麼?例如,在下面的圖片中,我想要將點A移動到B,x度; A和(0,0)之間的距離應該在B和(0,0)之間相同。移動/旋轉點的算法
我需要在前端環境中執行JavaScript操作。
B.x = A.x * cos(x) - A.y * sin(x)
B.y = A.x * sin(x) + A.y * cos(x)
x
被假定爲弧度,則必須轉換,否則。
+1是的,並作爲旁白:var嚴重=繪製時間-OPs-nice-image>時間爲他到谷歌的答案; – markE 2013-03-11 20:52:50
@markE,我第一次必須爲自己回答這個問題,那裏沒有Google,甚至沒有互聯網。我從基本觸發中找出了它。時代如何變化! – 2013-03-11 20:58:21
爲了幫助進行大量的Canvas(或只是JavaScript)轉換,我製作了一個小的Transformation類,可以將任意類型的任意轉換(旋轉,縮放,平移)應用於給定點。
當您需要數學來模擬Canvas上的轉換矩陣時,這非常有用。
https://github.com/simonsarris/Canvas-tutorials/blob/master/transform.js
要旋轉它的一個點,你會怎麼做:
var t = new Transform();
t.rotate(5); // some number of radians
t.transformPoint(ax, ay); // returns [bx, by]
http://en.wikipedia.org/wiki/Rotation_%28mathematics%29 – nhahtdh 2013-03-11 20:24:03
什麼問題?你有什麼嘗試? – Bergi 2013-03-11 20:32:04
這個問題是我學習如何在畫布上繪製多邊形的一部分。如果它對其他人有幫助,這裏有一個公式可以做到這一點:http://stackoverflow.com/a/11340972/583539。 – moey 2013-03-13 16:50:40