旋转形状时如何计算形状中的点

Posted

技术标签:

【中文标题】旋转形状时如何计算形状中的点【英文标题】:How to calculate points in a shape when shape is rotated 【发布时间】:2014-04-03 04:29:38 【问题描述】:

我有一堆不同的形状,在这些形状上有 20 个点排列在一个网格中。我想弄清楚的是如何计算旋转形状时这些点的位置,这些形状可以从形状中心旋转任意角度。这些点从形状的左上角开始放置。

这里有几个形状示例,其中包含我希望在形状旋转时能够计算的点。我在 0 度处拥有所有形状的所有 x/y 坐标。我正在构建一个 javascript 应用程序,所以如果有人在 JavaScript 中有任何功能,那就太好了,或者如果你可以将我引导到有一些资源的地方。

【问题讨论】:

【参考方案1】:

要将点 (Xold,Yold) 绕中心点 (Xc, Yc) 逆时针旋转角度角度,可以使用复杂的affine transformation,由旋转中心到原点的平移、围绕原点的旋转和反向平移组成。结果公式:

Xnew = Xc + (Xold - Xc) * Cos(Angle) - (Yold-Yc) * Sin(Angle)
Ynew = Yc + (Xold - Xc) * Sin(Angle) + (Yold-Yc) * Cos(Angle)

【讨论】:

以上是关于旋转形状时如何计算形状中的点的主要内容,如果未能解决你的问题,请参考以下文章

如何在保留字符串形状的同时旋转字符串列表中的字母?

如何设置悬停效果(注意:只有方形边框在悬停时应该像钻石形状一样旋转,而不是图像)[关闭]

如何在 C# 中旋转二维对象

在使用 C++ 在 OpenGL 中移动形状时按时间自动旋转形状

如何在OpenGL中实现形状的原位旋转和旋转状态下的移动?

将形状旋转到 1 到 2 弧度之间的任何位置都会重置其旋转