Vous devriez généralement envisager de faire tourner des rectangles dans un moteur de détection de collision, car il sera très simple à implémenter (je veux dire en considérant le rectangle tourné comme il est). En tout cas si vous voulez vraiment simplifier pour avoir un niveau de détection de collision grossier, le mieux est d'encastrer le rectangle dans un cercle, parce que c'est vraiment simple (centré sur le centre du rectangle et avec un rayon de la moitié -diagonale du rectangle) et comparé à l'utilisation d'une boîte, il peut être assez précis pour une détection grossière. En fait, vous pouvez avoir un angle de seuil pour décider s'il vaut mieux utiliser un cercle ou considérer le rectangle d'origine (la plupart des cas dégénératifs sont quand l'angle est proche de k*PI
avec k = 0,1,2,3
Si vous êtes vraiment vraiment envie de considérer le rectangle pivoté, vous pouvez le calculer facilement en choisissant le sommet le plus élevé de votre rectangle (xT, yT)
et le (xL, yL)
plus à gauche (après la rotation bien sûr) pour obtenir le point topleft qui sera (xL, yT)
.Alors vous faites la même chose pour le coin droite prenant (xR, yB)
du point le plus à droite et le plus bas de votre rectangle et vous l'avez.Il sera le rectangle inclus dans (xL, yY) (xR, yB)
Je sais que d'une façon serait être de faire pivoter tous les coins du rectangle et de les utiliser, mais j'ai pensé qu'il pourrait y en avoir un meilleur. – Markus
Et @mojuba: Si vous (ou l'une des deux personnes qui a upvoted votre commentaire) connaissez la réponse, ce serait vraiment bien si vous pouviez le poster aussi ... – Markus
duplication possible de [Calculer les coordonnées de la boîte jointe à partir d'un rectangle pivoté , Image à l'intérieur.] (Http://stackoverflow.com/questions/622140/calculate-bounding-box-coordinates-from-a-rotated-rectangle-picture-inside) –