Python 给定2个矢量大小和它们之间的角度,找到端点

Python 给定2个矢量大小和它们之间的角度,找到端点,python,numpy,math,vector,physics,Python,Numpy,Math,Vector,Physics,我有一个三维向量AB和向量BC。我也有这两个向量的大小。我也知道向量AB和向量BC之间的角度。此外,我还知道A和B的坐标 我想找到C的坐标 更具体地说,对于一个固定长度的向量AB,我想用上面提供的信息构造很多不同大小的向量,以及AB和“待构造向量”之间的固定角度 我知道的一种方法是找到端点C的XY和z坐标,但在3D中需要2个角度,我只有一个,所以我想不出解决方案 请帮帮我 谢谢如果您想要一个算法来选择无限多个这样的点中的一个,也许以下算法适合您: 将numpy导入为np def帧_旋转(v):

我有一个三维向量AB和向量BC。我也有这两个向量的大小。我也知道向量AB和向量BC之间的角度。此外,我还知道A和B的坐标

我想找到C的坐标

更具体地说,对于一个固定长度的向量AB,我想用上面提供的信息构造很多不同大小的向量,以及AB和“待构造向量”之间的固定角度

我知道的一种方法是找到端点C的XY和z坐标,但在3D中需要2个角度,我只有一个,所以我想不出解决方案

请帮帮我


谢谢

如果您想要一个算法来选择无限多个这样的点中的一个,也许以下算法适合您:

将numpy导入为np
def帧_旋转(v):
i=np.argmin(v)
E=np.零(3)
E[i]=1
U=np.empty((3,3),dtype=float)
U[0,:]=v
U[2,:]=np.cross(v,E)
U[2,:]=U[2,:]/np.linalg.norm(U[2,:]))
U[1,:]=np.cross(U[2,:],U[0,:]))
返回英国
def find_a_point_C(a、B、长度、角度):
AB=B-A
长度_AB=np.linalg.norm(B-A)
AB=AB/长度
角度=角度*np.pi/180
C=np.array([np.cos(角度),np.sin(角度),0])
C=长度_BC*C
C[0]=C[0]+长度
U=帧旋转(AB)
返回U.dot(C)+A
def cos_角(v,w):
返回v.dot(w)/(np.linalg.norm(v)*np.linalg.norm(w))
A=np.数组([1,3,2])
B=np.数组([2,7,7])
长度_BC=3
角度=60度
C=查找点C(a、B、长度、角度)
印刷品(C)
#正确性测试
印刷品(np.linalg.norm(C-B))
打印(cos_角(B-A,C-B))
打印(cos_角度(B-A,C-B)-np.cos(角度*np.pi/180))

没有唯一的解决方案。C的轨迹是一个圆,有无穷多个解。此外,这似乎不是一个编程问题。我可能会更好地问你的问题。你好,谢谢你的回答。事实上,我正试图通过编写代码来构造一个树结构。我有一个向量,我想通过提供一个角度和一个长度从它的端点构造另一个向量,然后找到它的端点。如前所述,我支持它,3D中没有唯一的点C满足你的条件,但有一整圈。你的问题没有足够的约束。除非以某种方式限制C的位置(例如,特定平面),否则无论使用何种坐标系和表示法,C都没有唯一的解决方案。