背景
在网上找 python 判断两个向量是否平行,没有找到直接可用的代码。 于是,写了一个 is_parallel 的函数。
代码
import numpy as np
def is_parallel(vec1, vec2):
""" 判断二个三维向量是否平行 """
assert isinstance(vec1, np.ndarray), r'输入的 vec1 必须为 ndarray 类型'
assert isinstance(vec2, np.ndarray), r'输入的 vec2 必须为 ndarray 类型'
assert vec1.shape == vec2.shape, r'输入的参数 shape 必须相同'
vec1_normalized = vec1 / np.linalg.norm(vec1)
vec2_normalized = vec2 / np.linalg.norm(vec2)
if 1.0 - abs(np.dot(vec1_normalized, vec2_normalized)) < 1e-6:
return True
else:
return False
if __name__ == '__main__':
vec1 = np.array([1.0, 0.0, 0.0])
vec2 = np.array([-1.0, 0.0, 0.0])
print(is_parallel(vec1, vec2))
vec3 = np.array([0.5, 0.0, 0.0])
print(is_parallel(vec1, vec3))
vec4 = np.array([0.0, 1.0, 0.0])
print(is_parallel(vec1, vec4))
测试结果:
测试用起来,还不错。
|