我的问题主要是在以下情况下计算第二个元素的x和y坐标。
对于unity3d中的工具,使用c#
答案 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 - 罪的反转),其中U
和V
是旧的和新的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类。它具有您需要的所有功能。小心弧度和度数。