使用 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()
函数获得的角度围绕我的枢轴点旋转该点?
【问题讨论】:
你能展示你的完整代码吗?现在不可能正确地定义问题并看看你在做什么。 我觉得够了。我只需要使用旋转和枢轴点计算rightX
和rightY
的新位置。我不做更多,所以我不能展示更多。我发现了这个:***.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() 返回的角度围绕另一个点旋转一个点的主要内容,如果未能解决你的问题,请参考以下文章