给定2个向量和2个角度如何找到第3个向量

时间:2017-10-03 14:48:52

标签: math vector 2d unity5

这似乎是一个非常简单的问题,但我无法弄清楚...... 如下图所示:

enter image description here

假设我们知道:

  • Vector GL_RGBA
  • Vector (X,Y)
  • 角度(X1,Y1)

如何在Unity中获取向量a

非常感谢提前。

2 个答案:

答案 0 :(得分:1)

不完全确定是否有更有效的方法来执行此操作,但它会起作用。

首先,您需要找到X,Y和X1,Y1之间距离矢量的大小。我们将此称为Dist1。

Dist1 = Vector2.Distance(new Vector2(X,Y), new Vector2(X1,Y1));

使用这个距离,我们可以找到行到X?,Y?的向量的大小?我们称之为DistQ。

DistQ = Dist1 / Mathf.Cos(a * Mathf.Deg2Rad);

你现在需要找到这条线相对于整个坐标平面的角度,它将创建一个带X?Y的新三角形?和x轴。

angle = Mathf.Atan2((Y - Y1), (X - X1)) * Mathf.Rad2Deg - a;

现在我们可以使用带有DistQ斜边的更多trig和这个新角度来找到相对于X1和Y1的X?(XF)和Y?(YF)分量,我们将添加它以获得最终的矢量分量。

XF = DistQ * Mathf.Cos(angle * Mathf.Deg2Rad) + X1;
YF = DistQ * Mathf.Sin(angle * Mathf.Deg2Rad) + Y1;

答案 1 :(得分:1)

从所有坐标中减去X1,Y1。

 XX = X - X1
 YY = Y - Y1

(DX, DY)(XX, YY)和未知点之间的向量 此向量垂直于(XX, YY),因此标量积为零 并且该向量的长度等于(XX, YY)的长度乘以角度的正切 方程式是

 DX * XX + DY * YY = 0
 DX^2 + DY^2 = (XX^2 + YY^2) * Tan^2(Alpha)

解决此系统的未知问题(DX, DY)(一般情况下有两种解决方案),然后将未知坐标计算为(X + DX, Y + DY)