我需要知道空间中两个向量形成的平面的垂直线。我在互联网上发现这可以通过3D 向量的向量乘法来计算。
在我的代码中,它看起来像这样:
def get_normal(translated_vec):
line1 = translated_vec[1] - translated_vec[0]
line2 = translated_vec[2] - translated_vec[0]
normal = np.array([line1[1] * line2[2] - line1[2] * line2[1],
line1[2] * line2[0] - line1[0] * line2[2],
line1[0] * line2[1] - line1[1] * line2[0]])
l = np.linalg.norm(normal)
if l != 0:
normal /= l
else:
normal += 1.0
return normal
输入示例:
translated_vec = np.array([[ 0.07243389, -0.462265, 4.87585974],
[ 0.13487457, -0.3653465, 5.06419032],
[ 0.20468741, -0.1275775, 4.95642205]])
它确实有效,但它工作得太慢了,我想在帮助下以某种方式加快速度numpy
,我发现那里有一个函数vdot
,但它不适合我,因为当它接收两个向量作为输入时,它输出的不是一个新的向量,而是一个数字。也就是说,我需要创建一个计算this的快速函数。
使用np.cross(a, b, axisa=- 1, axisb=- 1, axisc=- 1, axis=None) 功能: