给定3个顶点中的2个定义四面体并且它们之间的所有3个角度,找到第3个顶点

时间:2013-02-21 03:24:10

标签: algorithm 3d geometry

假设一个四面体的四个顶点中的一个位于原点,另外三个位于矢量 u v w 的末尾>。如果已知矢量 u v ,并且 u v 之间的角度, v w w u 也是众所周知的,似乎有 w :通过围绕 u 轴旋转 u w 角度的矢量并通过旋转矢量形成的两个锥体的交点关于 v 轴的 v w 角度。

虽然我在几天内无法提出封闭式解决方案,但我希望这是因为我缺乏3D几何体验,而且经验丰富的人可能会提出有用的建议。

2 个答案:

答案 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 线性相关时(指向同一方向)。

我们可以做的另一项检查是,如果向量uv是正交的,那么就知道wy = cos(vw)(见https://math.stackexchange.com/questions/726782/find-a-3d-vector-given-the-angles-of-the-axes-and-a-magnitude)。这不属于上面的表达式(因为cos(uv) = 0sin(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

这个系统可以给我们:没有解决方案(锥体不重叠);一个解决方案(锥体触摸);两种解决方案(两条光线作为锥体的表面交叉点)