假设一个四面体的四个顶点中的一个位于原点,另外三个位于矢量 u , v 和 w 的末尾>。如果已知矢量 u 和 v ,并且 u 和 v 之间的角度, v 和 w , w 和 u 也是众所周知的,似乎有 w :通过围绕 u 轴旋转 u 和 w 角度的矢量并通过旋转矢量形成的两个锥体的交点关于 v 轴的 v 和 w 角度。
虽然我在几天内无法提出封闭式解决方案,但我希望这是因为我缺乏3D几何体验,而且经验丰富的人可能会提出有用的建议。
答案 0 :(得分:1)
我遇到了同样的问题,发现MBo的答案非常有用。但我想我们可以多说一点 w 的值,因为我们可以自由选择要使用的坐标系。特别是,如果我们选择x轴在 u 的方向,以及包含向量 v 的xy平面,然后MBo的方程组变为:
wx = cos(uw)
vx*wx + vy*wy = cos(vw)
||w|| = 1
这个坐标系给出了
vx = cos(uv), vy = sin(uv)
所以我们立即得到了
_____________________
( cos(vw) - cos(uv) * cos(uw) + / 2 )
w = ( cos(uw), ----------------------------- , - / 1 - cos (uw) - wy*wy )
( sin(uv) \/ )
平方根上的+ - 给出了两种可能的解决方案,当然除非1 - cos^2(uw) - wy^2 <= 0
。除sin(uv)
之外的除法也突出显示退缩的情况,当 u 和 v 线性相关时(指向同一方向)。
我们可以做的另一项检查是,如果向量u
和v
是正交的,那么就知道wy = cos(vw)
(见https://math.stackexchange.com/questions/726782/find-a-3d-vector-given-the-angles-of-the-axes-and-a-magnitude)。这不属于上面的表达式(因为cos(uv) = 0
和sin(uv) = 1
)。
答案 1 :(得分:0)
没有足够的数据来计算顶点w位置。但是有可能找到单位向量 w (如果存在)。只需使用标量积属性并求解方程组 (我使用(vx,vy,vz)作为单位(标准化)向量的组件 v )
vx*wx+vy*wy+vz*wz=Cos(v,w angle)
ux*wx+uy*wy+uz*wz=Cos(u,w angle)
wx^2+wy^2+wz^2=1 //unit vector
这个系统可以给我们:没有解决方案(锥体不重叠);一个解决方案(锥体触摸);两种解决方案(两条光线作为锥体的表面交叉点)