J'ai deux boîtes englobantes alignées sur l'objet (c'est-à-dire non alignées sur l'axe, elles tournent avec l'objet). Je voudrais savoir si deux boîtes alignées sur un objet se chevauchent. ( Édition: note - J'utilise un test de boîte englobante alignée sur l'axe pour éliminer rapidement les objets distants, donc peu importe si la routine quad est un peu plus lente. )
Mes boîtes sont stockées sous forme de quatre points x, y. J'ai cherché des réponses, mais je ne peux pas comprendre les noms de variables et les algorithmes dans les exemples pour les appliquer à mon cas particulier.
Quelqu'un peut-il m'aider à montrer comment cela serait fait, de manière claire et simple? Merci. (Le langage particulier n'est pas important, le pseudo-code de style C est OK.)
la source
Le moyen le plus simple est probablement de tester chaque sommet de la case B contre chaque côté de la case A (calculer la distance signée). De cette façon, vous pouvez classer chaque sommet comme "devant" ou "derrière" le segment.
Si tous les sommets de B sont classés "devant" l'un des segments de A, B et A ne se chevauchent pas; sinon, ils le font.
Cela est quelque peu compliqué, vous pouvez donc obtenir un gain de performances en effectuant d'abord une vérification cercle-cercle, en utilisant les cercles de délimitation des carrés (trivial pour calculer)
la source