在绘制图形或者图像处理中,经常需要求向量的垂直向量:
通常,可使用如下步骤:
- 首先向量规一化
- 再向量x, y 轴值 互换。
实验与验证 代码如下:
vec_1 表示 30度的向量, vec_2 表示 120 度的向量
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import numpy as np
import math
def get_vertical_vector(vec):
""" 求二维的向量的垂直向量 """
assert isinstance(vec, list) and len(vec) == 2, r'平面上的向量必须为2'
return [vec[1], -vec[0]]
if __name__ == '__main__':
# example:
vec_1 = [math.sin(30/180*math.pi), math.cos(30/180*math.pi)]
vec_2 = [math.sin(120/180*math.pi), math.cos(120/180*math.pi)]
vec_3 = get_vertical_vector(vec_1)
if np.dot(vec_1, vec_2) < 1e-6:
print(r'{} 与 {} 向量垂直'.format(vec_1, vec_2))
else:
print("{} 与 {} 向量不垂直")
if np.dot(vec_1, vec_3) < 1e-6:
print(r'{} 与 {} 向量垂直'.format(vec_1, vec_3))
else:
print(r'{} 与 {} 向量不垂直'.format(vec_1, vec_3))
输入结果
[0.49999999999999994, 0.8660254037844387] 与 [0.8660254037844387, -0.4999999999999998] 向量垂直
[0.49999999999999994, 0.8660254037844387] 与 [0.8660254037844387, -0.49999999999999994] 向量垂直