移动/旋转点的算法

时间:2013-03-11 20:21:36

标签: javascript algorithm canvas drawing graph-algorithm

将(x,y)坐标中的点相对于(0,0)移动/“旋转”x度的算法是什么?例如,在下图中,我想将点A移动到B,x度; A和(0,0)之间的距离在B和(0,0)之间应该相同。

我需要在前端环境中进行操作,即JavaScript。

enter image description here

2 个答案:

答案 0 :(得分:5)

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

x假定为弧度,否则必须转换。

答案 1 :(得分:0)

为了帮助进行大量的Canvas(或者只是JavaScript)转换,我创建了一个小型的Transformation类,它可以将任意类型的任意转换(旋转,缩放,转换)应用于给定的点。

当你需要数学来模拟画布上的变换矩阵时,这非常有用。

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]