je lis des rectangles d'intersection sur:séparation test de l'axe, détecter si un rectangle pivotée chevauchent un autre rectangle plat
Algorithm to detect intersection of two rectangles?
Mais j'ai du mal à le mettre en œuvre. Si R1 (A, B, C, D) est mon rectangle tourné et R2 (A ', B', C ', D') l'autre rectangle sans rotation.
La formule extraite à partir du lien ci-dessus est la suivante:
edge = v(n) - v(n-1)
vous pouvez obtenir une perpendiculaire à cette en le faisant tourner de 90 °. En 2D c'est facile:
rotated.x = -unrotated.y
rotated.y = unrotated.x
// rotated: your rotated edge
// v(n-1) any point from the edge.
// testpoint: the point you want to find out which side it's on.
side = sign (rotated.x * (testpoint.x - v(n-1).x) +
rotated.y * (testpoint.y - v(n-1).y);
Mes bords seront mis en rotation de R1 avec
AB (xB-xA, yB-yA) x est donc pivotée xB-xA? BC (xC-xB, YC-y1) CD ... AD ...
Testpoint sera A 'B', C 'D' de R2 je dois donc vérifier le signe de le résultat de tous les points de R2 contre les 4 bords de R1. Cest 16 comparaisons si intersection. Comment puis-je savoir si j'ai trouvé un bord de séparation?
Merci