C# 圆坐标计算
我的问题基本上是在以下情况下计算第二个元素的x和y坐标 用于unity3d中的工具,使用c#C# 圆坐标计算,c#,unity3d,coordinates,C#,Unity3d,Coordinates,我的问题基本上是在以下情况下计算第二个元素的x和y坐标 用于unity3d中的工具,使用c# 如果你知道x轴和这个长方体之间的角度,你可以使用一些基本的三角 假设长方体对象的长度为“len”。(这确实有助于更好地描述正在发生的事情,我不完全理解。)假设你有一个θ角 我假设圆心有坐标(0,0) 然后,从圆心到长方体接触的圆边缘的垂直距离为y=len*sin(θ),水平距离为len*cos(θ) 如果你只走了盒子的2/5,你会用len/5而不是len 这只是背后的数学问题。在c#中,你想使用数学类。
如果你知道x轴和这个长方体之间的角度,你可以使用一些基本的三角 假设长方体对象的长度为“len”。(这确实有助于更好地描述正在发生的事情,我不完全理解。)假设你有一个θ角 我假设圆心有坐标(0,0) 然后,从圆心到长方体接触的圆边缘的垂直距离为y=len*sin(θ),水平距离为len*cos(θ) 如果你只走了盒子的2/5,你会用len/5而不是len
这只是背后的数学问题。在c#中,你想使用数学类。它具有您需要的所有功能。注意弧度和度数 我猜你有A和B的坐标。用以下公式求第二条直线的角度:
float angle = atan2(B.y-A.y, B.x-A.x)
仅当您的情况与图表中的轴对齐时(即,如果原始配置沿x轴对齐),此选项才有效。如果没有,您可以为角度
(您将需要一个Arcin——sin的倒数)求解公式|uxv |=|U | | V | sin(角度)
(需要一个Arcin),其中U
和V
是新旧AB
向量
然后围绕A
旋转您的兴趣点(称之为p
)。首先从P
中减去A
的坐标,使旋转轴位于原点。然后通过乘以旋转矩阵旋转P
:
[ cos(angle) -sin(angle) ] [ P.x ]
[ sin(angle) cos(angle) ] [ P.y ]
给
x = cos(angle) * P.x - sin(angle) * P.y
y = sin(angle) * P.x + cos(angle) * P.y
完成这些后,将A
的坐标添加回
总之:
P_new = A + rotate(P_old - A)
实际的代码将比这更复杂,但这是抽象的图片。我将把编码留给您。看起来像是定期旋转-到底是什么问题?你不知道安格尔?或者你不知道旋转后如何计算坐标?还是别的?是的,旋转后如何计算坐标?非常感谢你的回复,但我已经更新了图像。我们现在有位置A和B。