Maison > développement back-end > C++ > Comment faire pivoter un point autour d'un autre point en 2D à l'aide d'Allegro ?

Comment faire pivoter un point autour d'un autre point en 2D à l'aide d'Allegro ?

Barbara Streisand
Libérer: 2024-12-09 17:26:20
original
944 Les gens l'ont consulté

How to Rotate a Point Around Another Point in 2D Using 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 :

  • cx et cy : Coordonnées X et Y du point pivot
  • angleInRads : Angle de rotation en radians
  • p : Le point être rotated

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;
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal