二维中两个向量的平分线(可能共线)

2024-02-04

一般如何找到两个向量的二等分 b = (bx, by)(我们考虑两个非零向量 u = (ux, uy), v = (vx, vy),可能是共线的)。

对于非共线向量我们可以写:

bx = ux/|u| + vx / |v|
by = uy/|u| + vy / |v|

但对于共线向量

bx = by = 0.

Example:

u = (0 , 1)
v = (0, -1)
b = (0, 0)

通用且统一的方法是获取两个向量的角度

theta_u = math.atan2(ux, uy)
theta_v = math.atan2(vx, vy)

并创建一个具有平均角度的新向量:

middle_theta = (theta_u+theta_v)/2
(bx, by) = (cos(middle_theta), sin(middle_theta))

这样,您就可以避免使用相反向量观察到的陷阱。

PS:请注意,“平分线”向量的含义存在歧义:通常有两个平分线向量(通常一个用于较小的角度,一个用于较大的角度)。如果你想要较小角度内的平分线向量,那么你原来的公式就很好了;您可以单独处理您观察到的特殊情况,例如通过采用与两个输入向量中的任何一个正交的向量(-uy/|u|, ux/|u|)如果你的公式产生空向量。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

二维中两个向量的平分线(可能共线) 的相关文章

随机推荐