计算圆中的坐标

时间:2014-04-24 02:13:02

标签: c# unity3d coordinates

我的问题主要是在以下情况下计算第二个元素的x和y坐标。

对于unity3d中的工具,使用c#

enter image description here

2 个答案:

答案 0 :(得分:1)

所以我猜你有A和B的坐标。找到第二行的角度:

float angle = atan2(B.y-A.y, B.x-A.x)

仅当您的情况与图中的轴对齐时才会起作用(即,如果原始配置沿x轴排列)。如果没有,您可以为|U x V| = |U| |V| sin(angle)求解公式angle(您将需要一个arcsin - 罪的反转),其中UV是旧的和新的AB向量。

然后围绕P旋转您的兴趣点(称之为A)。您可以先从A减去P的坐标,然后旋转轴位于原点。然后通过乘以旋转矩阵来旋转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)

实际代码将比这更复杂,但这是抽象画面。我会把编码留给你。

答案 1 :(得分:0)

如果你知道x轴和这个盒形物体之间的角度,你可以使用一些基本的trig。

让我们假设盒形物体的长度为“len”。 (这有助于更好地标记正在发生的事情,我并不完全理解。)并且假设你的角度为θ。

我假设圆的中心有坐标(0,0)。

那么从圆心到圆框边缘的垂直距离是y = len * sin(θ),水平距离是len * cos(θ)。

如果你只使用大约2 / 5s的方式你会使用len / 5而不是len。

这只是它背后的数学。在c#中,您希望使用Math类。它具有您需要的所有功能。小心弧度和度数。