Deux Rectangles intersection
J'ai deux rectangles caractérisé par 4 valeurs :
Position de gauche X
, position du haut Y
, largeur W
et la hauteur H
:
X1, Y1, H1, W1
X2, Y2, H2, W2
Rectangles ne sont pas en rotation, comme suit:
+--------------------> X axis
|
| (X,Y) (X+W, Y)
| +--------------+
| | |
| | |
| | |
| +--------------+
v (X, Y+H) (X+W,Y+H)
Y axis
Quelle est la meilleure solution pour déterminer si l'intersection des deux rectangles est vide ou pas?
- double possible de Algorithme pour détecter intersection de deux rectangles?
- voici un début sur une solution: gamedev.stackexchange.com/questions/25818/...
- dans l'autre question
..at an arbitrary angle..
ma question est plus simple et donc je suis à la recherche d'une réponse plus simple - c'est sûr, c'est un démarrer, merci 🙂
- Double Possible de Déterminer si deux rectangles se chevauchent les uns les autres?
Vous devez vous connecter pour publier un commentaire.
Si vous avez des quatre coordonnées –
((X,Y),(A,B))
et((X1,Y1),(A1,B1))
– plutôt que deux, plus de largeur et de hauteur, il devrait ressembler à ceci:Meilleur exemple..
et aussi une autre façon de voir cette lien ... et le code de votre auto..
Les deux rectangles ont les mêmes dimensions que vous pouvez faire:
J'ai juste essayé avec un programme c et a écrit ci-dessous.
À l'aide d'un système de coordonnées où (0, 0) est à gauche, en haut coin.
J'y ai pensé en termes d'une verticale et horizontale des fenêtres coulissantes
et d'en venir à ceci:
(B. Fond > A. Haut && B. Top < A. en Bas) && (B. Droit > A. Gauche && B. à Gauche < A. Droite)
Qui est ce que vous obtenez si vous appliquez la Loi de DeMorgan à la suivante:
Pas (B. Bas < A. Haut || B. Top > A. Bas || B. Droit < A. Gauche || B. Gauche > A. Droite)
Si les rectangles les coordonnées du coin inférieur gauche et le coin supérieur droit sont :
(r1x1, r1y1), (r1x2, r1y2) pour rect1 et
(r2x1, r2y1), (r2x2, r2y2) pour rect2
(Python comme le code ci-dessous)
si( X1<=X2+W2 && X2<=X1+W1 && Y1>=Y2-H2 && Y2>=Y1+H1 )
Se croisent
Dans la question Y est en position haute..
Remarque: Cette solution ne fonctionne que si le rectangle est aligné avec X /Y des Axes.