我正在嘗試使用 Python Vectors 模塊。v1 = Vector(1,0,0)v2 = Vector(1,1,0)這些向量之間的角度是 45 度。我可以使用以下說明獲得正確的值。>>> v1.angle(v2)45.00000000000001但是,v2.angle(v1) 出現錯誤。在調查中,發現 v1.dot(v2) 和 v2.dot(v1) 給出不同的結果,這就是這個錯誤背后的原因:>>> v1.dot(v2)1>>> v2.dot(v1)2與上面不同,我的理解是點積是可交換的。對此的任何幫助都會很棒。
1 回答

泛舟湖上清波郎朗
TA貢獻1818條經驗 獲得超3個贊
正如 pypi.org/project/vectors 評論的那樣,它是非常過時的模塊。它不是標準或推薦的模塊。請改用 numpy 或 scipy。
import numpy as np
v1 = np.array([1,0,0])
v2 = np.array([1,1,0])
您可以通過以下任何一種方法找到點積:
print(v2.dot(v1)) # Output = 1
print(v2.dot(v1)) # Output = 1
print(np.dot(v1,v2)) # Output = 1
要找到角度:
cos = np.dot(v1,v2)/(norm(v1)*norm(v2))
angle = np.arccos(np.clip(cos, -1, 1))
如果您更喜歡象征性地工作,您也可以查看 sympy。https://docs.sympy.org/latest/modules/geometry/lines.html#sympy.geometry.line.LinearEntity.angle_between
添加回答
舉報
0/150
提交
取消