gregS
gregS

Reputation: 2580

Given 2 of 3 vertices that define a tetrahedron and all 3 angles between them, find 3rd vertex

Suppose one of a tetrahedron's four vertices is at the origin and the other three are at the end of vectors u, v, and w. If vectors u and v are known, and the angles between u and v, v and w, and w and u are also known, it seems there is a closed form solution for w: the intersection of the two cones formed by rotating a vector at the u and w angle about the u axis, and by rotating a vector at the v and w angle about the v axis.

Although I haven't been able to come up with a closed form solution in a couple days, I'm hoping it is due to my lack of experience with 3d geometry and that someone with more experience might have a helpful suggestion.

Upvotes: 1

Views: 321

Answers (2)

Tom
Tom

Reputation: 1339

I had the same problem, and found MBo's answer very useful. But I think we can say a bit more about the value of w, because we're free to pick the coordinate system to work in. In particular, if we choose the x-axis to be in the direction of u, and the xy-plane to contain the vector v, then MBo's system of equations becomes:

   wx         = cos(uw)
vx*wx + vy*wy = cos(vw)
||w||         = 1

and this coordinate system gives

vx = cos(uv), vy = sin(uv)

so immediately we get that

                                                   _____________________
    (           cos(vw) - cos(uv) * cos(uw)    +  /        2              )
w = ( cos(uw), ----------------------------- , - /  1 - cos (uw) - wy*wy  )
    (                     sin(uv)              \/                         )

The +- on the square root gives the two possible solutions, unless of course 1 - cos^2(uw) - wy^2 <= 0. The division by sin(uv) also highlights a degenerate case when u and v are linearly dependent (point in the same direction).

Another check we can make is that if the vectors u and v are orthogonal, it's known that wy = cos(vw) (see https://math.stackexchange.com/questions/726782/find-a-3d-vector-given-the-angles-of-the-axes-and-a-magnitude). This is what falls out of the expression above (because cos(uv) = 0 and sin(uv) = 1).

Upvotes: 1

MBo
MBo

Reputation: 80325

There are not enough data to calculate vertice w position. But it is possible to find unit vector w (if it exists). Just use scalar product properties and solve equation system (I've used (vx,vy,vz) as components of unit (normalized) vector 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

This system can give us: no solutions (cones don't overlap); one solution (cones touching); two solutions (two rays as cones' surfaces intersection)

Upvotes: 0

Related Questions