Rotation d'un point autour d'un autre point dans l'espace 2D
Dans le but de créer un jeu de cartes où les cartes se déploient, un individu rencontre une difficulté pour déterminer quelle carte se trouve sous le curseur. Ce dilemme nécessite un moyen de faire pivoter les quatre sommets de la carte pour former un polygone pour la détection de collision.
Pour faciliter cette rotation, l'API Allegro fournit une fonction pratique :
al_draw_rotated_bitmap(OBJECT_TO_ROTATE, CENTER_X , CENTRE_Y, X, Y, DEGREES_TO_ROTATE_IN_RADIANS)
Cependant, pour calculer manuellement les points pivotés, il devient nécessaire de concevoir une fonction :
POINT rotate_point(float cx, float cy, float angle, POINT p)
où (cx, cy) représente le point pivot, l'angle désigne l'angle de rotation dans le sens inverse des aiguilles d'une montre et p est le point d'origine vers lequel être tourné.
L'essence de la solution réside dans l'exécution des étapes suivantes :
Effectuez la rotation en utilisant les équations :
En appliquant cette approche, la fonction peut effectivement faire pivoter un point autour de n'importe quel point pivot sur un plan 2D.
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!