gpt4 book ai didi

python - 如何检索两个 3D 向量之间的角度?

转载 作者:行者123 更新时间:2023-11-28 20:17:35 25 4
gpt4 key购买 nike

我是 python 新手。我在 3d 空间中有两个向量,我想知道两者之间的角度

我试过:

vec1=[x1,y1,z1]

vec2=[x2,y2,z2]

angle=np.arccos(np.dot(vec1,vec2)/(np.linalg.norm(vec1)*np.linalg.norm(vec2)))

但是当改变顺序时,vec2,vec1 获得相同的角度并且没有更高。当向量的顺序改变时,我想给我一个更大的角度。

最佳答案

使用函数帮助您选择所需的角度。在代码的开头,写:

def angle(v1, v2, acute):
# v1 is your firsr vector
# v2 is your second vector
angle = np.arccos(np.dot(v1, v2) / (np.linalg.norm(v1) * np.linalg.norm(v2)))
if (acute == True):
return angle
else:
return 2 * np.pi - angle

然后,当您想在程序中计算角度(以弧度为单位)时,只需编写

angle(vec1, vec2, 'True')

对于锐角,和

angle(vec2, vec1, 'False')

对于钝角。

例如:

vec1 = [1, -1, 0]
vec2 = [1, 1, 0]

#I am explicitly converting from radian to degree
print(180* angle(vec1, vec2, True)/np.pi) #90 degrees
print(180* angle(vec2, vec1, False)/np.pi) #270 degrees

关于python - 如何检索两个 3D 向量之间的角度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39497496/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com