使用 atan2() 返回的角度围绕另一个点旋转一个点

Posted

技术标签:

【中文标题】使用 atan2() 返回的角度围绕另一个点旋转一个点【英文标题】:Rotate a point around another point using the angle returned by atan2() 【发布时间】:2015-09-16 13:14:37 【问题描述】:

我有一个旋转角度:

var dx = this.mouseX - this.startX;
var dy = this.mouseY - this.startY;

_this.rotation = Math.atan2(dy, dx);

我知道我的支点(我的图像中心):

var pivotX = this.x + (this.imageWidth / 2);
var pivotY = this.y + (this.imageHeight / 2);

现在我还有一点:

var rightX = 600;
var rightY = 400;

如何使用从atan2() 函数获得的角度围绕我的枢轴点旋转该点?

【问题讨论】:

你能展示你的完整代码吗?现在不可能正确地定义问题并看看你在做什么。 我觉得够了。我只需要使用旋转和枢轴点计算rightXrightY 的新位置。我不做更多,所以我不能展示更多。我发现了这个:***.com/questions/2259476/… 但他们没有使用 atan2() 并且我对数学一无所知。我想我不能复制那个。 this_this 变量是什么?你什么时候调用这个代码?我正在尝试全面了解您在做什么。 看答案阿尔瓦罗。我用它做什么并不有趣。我只要求旋转一个点。 【参考方案1】:

要将点 x, y 围绕原点 0, 0 旋转给定的弧度角度,请执行以下数学运算:

new_x_point = old_x_point * cos(Angle) - old_y_point * sin(Angle);
new_y_point = old_y_point * cos(Angle) + old_x_point * sin(Angle);

现在,如果原点或枢轴点不是 0, 0,那么您需要先从原点的坐标中减去您要旋转的点,然后在该点上旋转,然后添加旋转点的偏移量,使其平移回原来的位置。

【讨论】:

以上是关于使用 atan2() 返回的角度围绕另一个点旋转一个点的主要内容,如果未能解决你的问题,请参考以下文章

atan2(y,x) && pow(x,y)

atan2(x,y)与pow(x,y)

使用OpenCV旋转点周围的点

如何使用MATLAB围绕不是图像中心点的点旋转图像?

以度数 python 围绕另一个点旋转点

atan2()如何转换为角度