计算从向量到坐标的角度

时间:2014-09-26 08:49:14

标签: math vector formula angle algebra

我正在试图找到一个合适的公式来计算一个简单的任务,但在实践中是一个很大的数学头痛。

我想找出将矢量的角度(X,Y,角度)变为面向坐标(X,Y)所需的偏移量

enter image description here

我的矢量并不总是面向360度,所以我也需要它作为变量.. 在我破坏我的电脑屏幕之前希望得到一个答案。 谢谢。

3 个答案:

答案 0 :(得分:2)

输入

  • p1 = (x1,y1) point1(矢量来源)
  • p2 = (x2,y2) point2
  • a1 = 360 deg向量方向
  • 假设你的coodinate系统是:X +是对的Y +是up ang +是CCW
  • 你的图像表明你有X,Y混合(角度通常从X轴开始而不是Y)
  • da=?更改a1以匹配p2-p1
  • 的方向

解决方案1:

  • da=a1-a2=a1-atanxy(x2-x1,y1-y1)
  • atanxy(dx,dy)在某些库中也称为atan2,只需确保操作数的顺序是正确的
  • 你也可以使用我的atanxy in C++
  • 它是4象限arctangens

解决方案2:

  • v1=(cos(a1),sin(a1))
  • v2=(x2-x1,y2-y1)
  • da=acos(dot(v1,v2)/(|v1|*|v2|))

或同样略有不同

  • v1=(cos(a1),sin(a1))
  • v2=(x2-x1,y2-y1)
  • v2/=|v2| //生成v2单位向量,v1已经是单位
  • da=acos(dot(v1,v2))

这样:

da=acos((cos(a1)*(x2-x1)+sin(a1)*(y2-y1)/sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)));

[注释]

  • 只需更改它以匹配您的坐标系(您未指定)
  • 根据你的罪,cos,atan依赖使用弧度或度数......

答案 1 :(得分:0)

载体之间的差异也是一个载体。

然后计算tangens(y part / x part)并将其反转为一个角度。

当然,如果x = 0,则使用y的符号。

答案 2 :(得分:0)

如果面对的坐标是(x2,y2)

deltaY = y2 - y1

deltaX = x2 - x1

使用此公式,您可以获得两点之间的角度...

angleInDegrees = arctan(deltaY / deltaX)* 180 / PI

减去矢量的原始角度,您将得到正确的偏移量!