匹配边缘之间的角度

时间:2016-08-01 16:17:58

标签: python math vector

我正在使用python为初学者编写脚本。 使这个例子变得简单,我有一条边,uv坐标为([0,0],[1,1]),所以它是45度角。我有另一个边是([0,0],[0,1])所以它的角度是0/360度。我的目标是比较这两个边缘的角度以获得差异,这样我就可以修改第二个边缘的角度以匹配第一个边缘的角度。有没有办法通过矢量数学来做到这一点?

1 个答案:

答案 0 :(得分:0)

最容易重建并因此建设性地记住IMO的复杂画面。通过乘以a=a.x+i*a.y的共轭来计算从b=b.x+i*b.yb旋转a的角度,以从零角度得到一个角度。正实轴,

arg((a.x-i*a.y)*(b.x+i*b.y))

=arg((a.x*b.x+a.y*b.y)+i*(a.x*b.y-a.y*b.x))

=atan2( a.x*b.y-a.y*b.x , a.x*b.x+a.y*b.y )

请注意,屏幕坐标使用与笛卡尔/复平面相反的方向,因此更改使用符号开关,从atan2(y,x)atan2(-y,x)以获得通常方向的角度。

要从b生成向量w旋转角度(以弧度为单位)a,请乘以cos(w)+i*sin(w)以获取

b.x = cos(w)*a.x - sin(w)*a.y
b.y = cos(w)*a.y + sin(w)*a.x

您必须重新缩放才能获得指定长度的b