Maison >développement back-end >C++ >Deux rectangles se chevauchent-ils ?

Deux rectangles se chevauchent-ils ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-19 20:29:20605parcourir

Do Two Rectangles Overlap?

Détermination du chevauchement des rectangles

Dans les scénarios où des rectangles parallèles existent, une tâche cruciale consiste à déterminer s'ils se chevauchent. L'extrait de code fourni tente d'implémenter un algorithme à cet effet, mais il nécessite des précisions supplémentaires.

Pour évaluer efficacement le chevauchement, nous pouvons utiliser les conditions mathématiques suivantes :

if (RectA.Left < RectB.Right && RectA.Right > RectB.Left
    && RectA.Top > RectB.Bottom && RectA.Bottom < RectB.Top)

En coordonnées cartésiennes , cela se traduit par :

if (RectA.X1 < RectB.X2 && RectA.X2 > RectB.X1
    && RectA.Y1 > RectB.Y2 && RectA.Y2 < RectB.Y1)

Analysons cela dans détail :

  • Condition 1 : Si le bord gauche du rectangle A est à gauche du bord droit du rectangle B, alors A n'est pas entièrement à droite de B.
  • Condition 2 : Si le bord droit du rectangle A est à droite du bord gauche du rectangle B, alors A n'est pas entièrement à gauche de B.
  • Condition 3 : Si le bord supérieur du rectangle A est au-dessus du bord inférieur du rectangle B, alors A n'est pas entièrement en dessous de B.
  • Condition 4 : Si le bord inférieur du rectangle A est en dessous du bord supérieur du rectangle B, alors A n'est pas entièrement au-dessus B.

En combinant ces conditions à l'aide des opérateurs AND, nous nous assurons que les quatre conditions sont satisfaites simultanément. Cela établit les critères nécessaires et suffisants pour que deux rectangles se chevauchent.

Remarque : La méthode peut être étendue à des dimensions arbitraires, la rendant applicable à divers cas d'utilisation impliquant des objets non rectangulaires. De plus, en ajustant les opérateurs de comparaison, nous pouvons modifier les conditions pour déterminer des scénarios de chevauchement partiel ou complet selon les besoins.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn