原理:
设
这里求出的两个夹角的取值范围为 [0, pi]。
代码
这里方便起见,计算n个3维向量与z坐标之间的夹角。代码如下
import numpy as np normal1 = np.random.rand(5, 3) # 创建5行3列取值范围为[0,1)的数组 normal2 = np.array([0, 0, 1]).reshape(1, -1) data_M = np.sqrt(np.sum(normal1*normal1,axis=1)) data_N = np.sqrt(np.sum(normal2*normal2,axis=1)) cos_theta = np.sum(normal1 * normal2, axis=1)/(data_M*data_N) theta = np.degrees(np.arccos(cos_theta)) # 角点b的夹角值 print(normal1) print(theta)