I am having a hard time figuring out if a 3D point lies in a cuboid (like the one in the picture below). I found a lot of examples to check if a point lies inside a rectangle in a 2D space for example this on but none for 3D space.

enter image description here

I have a cuboid in 3D space. This cuboid can be of any size and can have any rotation. I can calculate the vertices $P_1$ to $P_8$ of the cuboid.

Can anyone point me in a direction on how to determine if a point lies inside the cuboid?


The three important directions are $u=P_1-P_2$, $v=P_1-P_4$ and $w=P_1-P_5$. They are three perpendicular edges of the rectangular box.

A point $x$ lies within the box when the three following constraints are respected:

  • The dot product $u.x$ is between $u.P_1$ and $u.P_2$
  • The dot product $v.x$ is between $v.P_1$ and $v.P_4$
  • The dot product $w.x$ is between $w.P_1$ and $w.P_5$

If the edges are not perpendicular, you need vectors that are perpendicular to the faces of the box. Using the cross-product, you can obtain them easily:
$$u=(P_1-P_4)\times(P_1-P_5)\\ v=(P_1-P_2)\times(P_1-P_5)\\ w=(P_1-P_2)\times(P_1-P_4)$$ then check the dot-products as before.

  • $\begingroup$ In the case of perpendicular edges the constraints are that all the three dot products must be valid right not just any one of them? Superb answer by the way $\endgroup$
    – gansub
    Sep 8 '18 at 10:10
  • 1
    $\begingroup$ According to my testing in unity, I had to check if ux is between uP2 & uP1; if vx is between vP4 & vP1; and if wx is between wP5 & wP1 (the inverse order) $\endgroup$
    – Ugo Hed
    Dec 14 '19 at 19:11
  • $\begingroup$ @Empy2 do I need to normalize the direction vectors u,v,w ? $\endgroup$
    – Kong
    Aug 9 at 14:04
  • $\begingroup$ @Kong No, $ku.x$ is between $ku.P_1$ and $ku.P_2$ whenever $u.x$ is between $u.P_1$ and $u.P_2$ $\endgroup$
    – Empy2
    Aug 9 at 14:26

Given $p_1,p_2,p_4,p_5$ vertices of your cuboid, and $p_v$ the point to test for intersection with the cuboid, compute: $$\begin{matrix} i=p_2-p_1\\ j=p_4-p_1\\ k=p_5-p_1\\ v=p_v-p_1\\ \end{matrix}$$

then, if $$\begin{matrix} 0<v\cdot i<i\cdot i\\ 0<v\cdot j<j\cdot j\\ 0<v\cdot k<k\cdot k \end{matrix}$$ The point is within the cuboid.


Since 2-D problem is known, divide the problem into 3 parts.

Disregard z-coordinate. If any point is within box bounds $ x_2-x_1,y_2-y_1, $ select it and all other such points. Similarly y-z and z-x boxes.

Next choose points that the are common to three selections.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.