Maison >développement back-end >C++ >Comment faire pivoter un point autour d'un autre point en 2D à l'aide d'Allegro ?
Faire pivoter un point autour d'un autre point en 2D
En infographie, la rotation d'un objet autour d'un point spécifique est une opération courante. Dans ce cas, vous souhaitez faire pivoter les 4 coins d'une carte à l'aide de l'API Allegro. Pour y parvenir, envisagez l'approche suivante :
旋转点函数
Vous pouvez implémenter une fonction appelée rotate_point pour effectuer l'opération de rotation de la manière souhaitée. Il prend les paramètres suivants :
Implémentation :
La fonction rotate_point soustrait d'abord le point pivot du point p donné. Cela déplace le point vers l'origine du système de coordonnées. Ensuite, il effectue la rotation en utilisant le sinus et le cosinus de l’angle de rotation. Enfin, il rajoute le point pivot pour obtenir le point pivoté.
Code :
POINT rotate_point(float cx, float cy, float angleInRads, POINT p) { float s = sin(angleInRads); float c = cos(angleInRads); // translate point back to origin: p.x -= cx; p.y -= cy; // rotate point float xnew = p.x * c - p.y * s; float ynew = p.x * s + p.y * c; // translate point back: p.x = xnew + cx; p.y = ynew + cy; return p; }
En appliquant cette rotation aux 4 points de coin de la carte, vous pouvez créer un polygone pivoté qui peut être utilisé pour la détection de collision.
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!