这似乎是一个非常简单的问题,但我无法弄清楚...... 如下图所示:
假设我们知道:
GL_RGBA
(X,Y)
(X1,Y1)
如何在Unity中获取向量a
?
非常感谢提前。
答案 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)