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

Deux rectangles se chevauchent-ils ? Une approche déterministe

Patricia Arquette
Patricia Arquetteoriginal
2024-12-25 04:12:16680parcourir

Do Two Rectangles Overlap? A Deterministic Approach

Détection déterministe du chevauchement des rectangles

L'objectif est de déterminer si deux rectangles se chevauchent dans un plan 2D, compte tenu de divers paramètres définissant leurs emplacements et dimensions. Votre implémentation semble être basée sur la théorie de la coque convexe, mais elle nécessite un examen plus approfondi pour valider son exactitude.

Algorithme de chevauchement de base

Une méthode intuitive de détection de chevauchement consiste à comparer les positions relatives des bords de chaque rectangle :

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

Cette condition garantit qu'aucune partie du rectangle A ne se trouve entièrement en dehors des limites du rectangle B, indiquant qu'ils se chevauchent.

Expliquer les conditions

Pour plus de clarté, la condition vérifie les éléments suivants :

  • Bord gauche de A : Si le bord gauche de A est positionné à gauche du bord droit de B, A ne peut pas être complètement à droite de B.
  • Bord droit de A : Si le bord droit de A est positionné à droite du bord gauche de B, A ne peut pas être complètement à gauche de B.
  • Bord supérieur de A : Si le bord supérieur de A est situé au dessus du bord inférieur de B, A ne peut pas être complètement en dessous B.
  • Bord inférieur de A : Si le bord inférieur de A est situé en dessous du bord supérieur de B, A ne peut pas être complètement au-dessus de B.

En résumé, si les quatre conditions sont satisfaites, les rectangles se chevauchent et, alternativement, si une condition échoue, ils ne se chevauchent pas.

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