Necessary and sufficient conditions for a point to lie inside a tetrahedron (vectors)

1.3k Views Asked by At

I am given the problem

Find a necessary and sufficient condition for a point to lie inside or on the tetrahedron formed by the position vectors O ,a, b, c.

In an earlier part of the question I was asked to find an equation of the plane passing through a,b and O which is r . (axb)=0, and then state a condition that, for a point above or below the plane, the point will be on the same side of the plane as a vector c. For this part I considered that the normal to plae on a particular side is axb, so for r and c on the same side it must be that r.(axb) and c.(axb) are the same sign. I am also given that a.(bxc)>0, so a condition must be that r.(axb)>0

In the next part of the question I am asked to show that the equation of a plane through a,b and c is

r.(axb + bxc + cxa)=a.(bxc)

which was simple enough to do.

I have a feeling that these parts are needed for the question I asked at the beginning, which is why I put them here.

Now my first thought was that if I gave a condition for a point being on or above each of the faces, then it must be contained within the tetrahedron. Using this approach, for the faces passing through the origin I get

1. r.(axb)$\geq$0

2. r.(bxc)$\geq$0

3. r.(cxa)$\geq$0

Now for the final face which does not pass through the orgin I am not sure, and even if my approach is correct I am pretty sure it is not the most elegant way to think about this; I considered the position vector a as a new 'origin'. I know that the normal to this plane is (axb + bxc + cxa) and I need a point which lies on the same side of this plane as the actual origin, which is a position vector -a from a

So using the same approach as before I need

(r-a).(axb + bxc + cxa) to be the same sign as (-a).(axb + bxc + cxa)=-a.(bxc). So I need (r-a).(axb + bxc + cxa) to be negative, meaning

4. r.(axb + bxc + cxa)$\leq$a.(bxc)

So I am not sure if this is at all correct, and i'm pretty sure there is a better way to think about this. I have come across something like this before and I think the linear independence of the vectors was used? Perhaps I could say that r= pa+qb+sc where p+q+s=1? I am not sure about this though. In some ways it seems to make sense, but it is not at all intuitive. And also somehow this has only one (or two?) conditions, whereas I had four before! So I don't really understand if either of these answers is correct. Unfortunately I don't seem to have a very good intuition when it comes to geometry.

5

There are 5 best solutions below

2
On

This reminds me of an old ProjectEuler problem I solved years ago: determine whether a point lies inside of a triangle. The following necessary and sufficient condition is straightforward but a little computation-heavy. Consider the graphic:

enter image description here

The red dot represents the point in question. Suppose that, for each vertex of the triangle, we connect a segment from that vertex to the point. Doing this creates three new triangles. Each of these triangles shares one of its sides with the original triangle and has as its other sides two of the freshly created segments. I have used green to highlight one of these three triangles.

Now consider the sum of the areas of these three triangles relative to the area of the original triangle. What is true if the point lies inside? What is true when the point lies outside? And what happens if the point lies on an edge of the original triangle?

We can compute the length of every segment in each of these figures by using the Pythagorean theorem. Next, we can thank the Hero of Alexandria for providing us a formula for the area of a triangle given only its side lengths.

This strategy can be adapted for the $\mathbb{R}^3$ case. Again, we can find the lengths of the sides of all the relevant tetrahedrons, and, conveniently, a generalization of Hero's formula exists for finding the volume of a tetrahedron given the lengths of its sides.

0
On

In the plane, a point is in the interior of a convex polygon if it is on the same side of each line as the mean of all the points.

Similarly, in $\mathbb{R}^3$, a point is in the interior of a convex polyhedron if it is on the same side of each polygon as the mean of all the vertices.

in $\mathbb{R}^n$, a point is in the interior of a convex polyhedron if it is on the same side of each polygon as the mean of all the vertices.

So, if the equation of the $i$-th polygon making up the polyhedron is $\sum_{k=1}^n a_{i,k}x_k = d_i$, then the condition for a point $P = (p_1, ..., p_n)$ to be inside is that $sign(\sum_{k=1}^n a_{i,k}p_k- d_i) =sign(\sum_{k=1}^n a_{i,k}c_k- d_i) $, where $C =(c_1, ..., c_n) $ is any point known to be inside the polyhedron, such as the mean of all the vertices.

0
On

Given $n+1$ affinely independent vertices $v_1,...,v_n,$ that is,

$$\det(v_2-v_1, ..., v_{n+1}-v_1) \neq 0,$$

the simplex that spans the vertices is parameterized as such:

$$p(u_1,...,u_n)= v_1+\sum_{i=1}^{n} (v_{i+1}-v_1) u_i$$ where each $u_i \geq 0$ and $\sum_{i=1}^{n} u_i \leq 1.$ Intuitively, what we are doing here is setting an initial vertex $v_1$ and adding nonnegative scalar multiples of the vectors between $v_1$ and $v_{i+1}$ for each $2 \leq i \leq n.$ The latter sum condition imposed on the scalars is necessary because if we didn't have that restriction, we would not have the triangular face spanned by $v_2,...,v_{n+1},$ and you would actually be parameterizing an unbounded region in that case.

Now to get a point in the interior of the $n$ simplex, we need $\sum_{i=1}^{n} u_i < 1$ and all $u_i>0$ because $\sum_{i=1}^{n} u_i = 1$ or $u_i = 0$ would result in you parameterizing the triangular faces.

0
On

Your last hypothesis on a linear combination of the given vectors is .. on the right track. Since you are asking to provide an intuitive explanation let's go by steps.
Consider the two vectors $\mathbf a$ and $\mathbf b$ as position vectors with respect to $O$: so they individuate two points $A$ and $B$ in the given reference system.
Now

  • you should akready know that $\mathbf {r} = \lambda \mathbf {a} +(1-\lambda) \mathbf {b}$ ($\mathbf r$ being the vector $(x,y,z)$ as per your notation and $\lambda$ a scalar) represents a line through $A,B$, and that when $0 \leq \lambda \leq 1$ you get the segment $[A,B]$. That is the same as $$ \mathbf{r} = \lambda \mathbf{a} + \mu \mathbf{b}\quad \left| {\;\left\{ \begin{gathered} 0 \leqslant \lambda ,\mu \left( { \leqslant 1} \right) \hfill \\ \lambda + \mu = 1 \hfill \\ \end{gathered} \right.} \right. $$
  • if you replace $\lambda + \mu = 1$ with $\lambda + \mu \leqslant 1$ then you clearly get the points inside (and on the border of) the triangle $\triangle OAB$ ;
  • once the above is clear, you can get that $$ \mathbf{r} = \lambda \mathbf{a} + \mu \mathbf{b} + \nu \mathbf{c}\quad \left| {\;\left\{ \begin{gathered} 0 \leqslant \lambda ,\mu ,\nu \left( { \leqslant 1} \right) \hfill \\ \lambda + \mu + \nu = 1 \hfill \\ \end{gathered} \right.} \right. $$ represents the triangle $\triangle ABC$ ($\mathbf{r} - \mathbf{a} = \left( {\lambda + \mu + \nu - 1} \right)\mathbf{a} + \mu \left( {\mathbf{b} - \mathbf{a}} \right) + \nu \left( {\mathbf{c} - \mathbf{a}} \right) $), and that putting instead $\lambda + \mu + \nu \leq 1$ is the result you are looking for.
0
On

One approach to this problem is to express the point $\mathbf r$ in barycentric coordinates. For a tetrahedron with vertices $\mathbf r_k$, $1\le k\le4$, the barycentric coordinates of a point $\mathbf r$ relative to the tetrahedron are a set of four scalars $\lambda_k$ such that $\sum_k\lambda_k=1$ and $\sum_k\lambda_k\mathbf r_k=\mathbf r$. If any $\lambda_k\lt0$, then $\mathbf r$ lies outside of the tetrahedron. These coordinates can be interpreted as signed ratios of volumes. Another way of looking at them is as weights in a weighted average of the vertices.

Following the construction described in the above-cited Wikipedia article, converting from Cartesian to barycentric coordinates amounts to solving a system of linear equations that can be written in vector form as $$\mathbf r=\mathbf R\mathbf\lambda,$$ where $\mathbf\lambda=(\lambda_1,\lambda_2,\lambda_3\lambda_4)^T$ is the vector of barycentric coordinates and $\mathbf R=(\mathbf r_1\mid\mathbf r_2\mid\mathbf r_3\mid\mathbf r_4)$. If we add the constraint that the sum of the coordinates is $1$, this becomes $$\pmatrix{x_1&x_2&x_3&x_4\\y_1&y_2&y_3&y_4\\z_1&z_2&z_3&z_4\\1&1&1&1}\mathbf\lambda=\pmatrix{x\\y\\z\\1}.$$ The vertices of the tetrahedron are assumed to be non-coplanar, so the matrix on the left is invertible, thus computing the barycentric coordinates amounts to inverting the matrix.