gpt4 book ai didi

c# - 根据旋转角度计算新的点偏移量?

转载 作者:太空狗 更新时间:2023-10-29 22:00:51 25 4
gpt4 key购买 nike

过去几周我正在开发一个应用程序,其中涉及一些三角函数,目前卡住了。如下图所示,我有一个圆形项目(位置#1 处的绿色圆圈),我知道它的中心点(我们称之为 X1,Y1)。圆圈有另一个点(橙色圆圈)有点偏离中心 - 在其他两个标记(蓝色圆圈)之间。这些标记可以四处移动。计算橙色点的坐标(我们称其为 X2、Y2)并计算蓝线相对于圆水平面的角度(称其为角度)。

Diagram

我可以通过以下方式计算圆心和点之间的差异:

deltaX = X2-X1

增量 Y = Y2-Y1

我需要将绿色圆圈(顺时针或逆时针 - 以较短者为准)从它的起始位置(位置 1)移动并旋转到位置 2。这意味着角度可以是负的或正的。蓝线必须垂直结束,橙色点位于位置 2 的中心(红色方 block )。我知道位置 2 中心的坐标(我们称此点为 X3,Y3)。位置 #1 和位置 #2 彼此恰好成 90 度角。

我想我可以使用一些三角恒等式公式来计算点的旋转,例如:

offsetX = deltaX * cos(90-Angle) - deltaY * sin(90-Angle)

offsetY = deltaX * sin(90-Angle) + deltaY * cos(90-Angle)

我希望这些偏移量是我需要的,当它移动/旋转到位置 2 时,我需要将圆调整到它的新中心。

X3 = X3 + 偏移量X

Y3 = Y3 + 偏移量Y

但是,当我尝试使用此数学运算时,它并没有将圆圈的橙色标记放在正方形的中心。不确定我的方程式和计算是否基于旋转角度(正或负,顺时针或逆时针)是否正确,或者我是否正确使用角度(我从 90 度中减去已知角度)。如何正确计算最终点/位置?非常感谢任何帮助和示例!

非常感谢您的宝贵时间!

最佳答案

所以您需要将圆圈旋转 90 - Angle,然后将橙色点移动到 (X3, Y3)?
首先需要找到旋转后的橙色点坐标:

newX = X2 * cos(90 - Angle) - Y2 * sin(90 - Angle);
newY = X2 * sin(90 - Angle) + Y2 * cos(90 - Angle);

newXnewY 是旋转后的橙色点坐标。要找到移动转换,只需减去:

moveX = X3 - newX;
moveY = Y3 - newY;

现在,如果将圆旋转 90 - Angle 并将其移动 (moveX, moveY),橙色点将移动到 (X3, Y3)。也就是说,如果您围绕 (0, 0) 点旋转圆圈。如果你围绕某个(X,Y)点旋转,你首先需要从X2中减去X,从Y2中减去Y,然后将X添加到newX,Y添加到newY。该减法将您的旋转基点“移动”到 (0, 0),因此在旋转后您需要将其移回:

newX = (X2 - X) * cos(90 - Angle) - (Y2 - Y) * sin(90 - Angle) + X;
newY = (X2 - X) * sin(90 - Angle) + (Y2 - Y) * cos(90 - Angle) + Y;

关于c# - 根据旋转角度计算新的点偏移量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26007202/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com