Vous devriez être en mesure de modifier Determine if two rectangles overlap each other? à votre but assez facilement.
Supposons que vous ayez CubeA
et CubeB
. L'une des 6 conditions garantit qu'aucun recouvrement ne peut exister:
Cond1. If A's left face is to the right of the B's right face,
- then A is Totally to right Of B
CubeA.X2 < CubeB.X1
Cond2. If A's right face is to the left of the B's left face,
- then A is Totally to left Of B
CubeB.X2 < CubeA.X1
Cond3. If A's top face is below B's bottom face,
- then A is Totally below B
CubeA.Z2 < CubeB.Z1
Cond4. If A's bottom face is above B's top face,
- then A is Totally above B
CubeB.Z2 < CubeA.Z1
Cond5. If A's front face is behind B's back face,
- then A is Totally behind B
CubeB.Y2 < CubeA.Y1
Cond6. If A's left face is to the left of B's right face,
- then A is Totally to the right of B
CubeB.X2 < CubeA.X1
donc la condition sans chevauchement est:
Cond1 or Cond2 or Cond3 or Cond4 or Cond5 or Cond6
Par conséquent, une condition suffisante pour Overlap est le contraire (De Morgan)
Not Cond1 AND Not Cond2 And Not Cond3 And Not Cond4 And Not Cond5 And Not Cond6
que voulez-vous dire par des bords ?, peut-être des visages? –
@Dave, vous avez raison. Modifié. – btilly
Votre algorithme suppose-t-il que les cubes sont alignés sur l'axe? Sry pour t'avoir dérangé ^^ –