2013-03-11 58 views
1

將(x,y)座標中的點相對於(0,0)移動/「旋轉」x度的算法是什麼?例如,在下面的圖片中,我想要將點A移動到B,x度; A和(0,0)之間的距離應該在B和(0,0)之間相同。移動/旋轉點的算法

我需要在前端環境中執行JavaScript操作。

enter image description here

+3

http://en.wikipedia.org/wiki/Rotation_%28mathematics%29 – nhahtdh 2013-03-11 20:24:03

+0

什麼問題?你有什麼嘗試? – Bergi 2013-03-11 20:32:04

+0

這個問題是我學習如何在畫布上繪製多邊形的一部分。如果它對其他人有幫助,這裏有一個公式可以做到這一點:http://stackoverflow.com/a/11340972/583539。 – moey 2013-03-13 16:50:40

回答

5
B.x = A.x * cos(x) - A.y * sin(x) 
B.y = A.x * sin(x) + A.y * cos(x) 

x被假定爲弧度,則必須轉換,否則。

+1

+1是的,並作爲旁白:var嚴重=繪製時間-OPs-nice-image>時間爲他到谷歌的答案; – markE 2013-03-11 20:52:50

+4

@markE,我第一次必須爲自己回答這個問題,那裏沒有Google,甚至沒有互聯網。我從基本觸發中找出了它。時代如何變化! – 2013-03-11 20:58:21

0

爲了幫助進行大量的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]