Maison > développement back-end > C++ > Comment faire pivoter un point autour d'un autre point dans un espace 2D ?

Comment faire pivoter un point autour d'un autre point dans un espace 2D ?

Susan Sarandon
Libérer: 2024-12-09 18:21:10
original
583 Les gens l'ont consulté

How to Rotate a Point Around Another Point in 2D Space?

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 :

  1. Traduire le point vers l'origine, ce qui donne p.x -= cx et p.y -= cy .
  2. Effectuez la rotation en utilisant les équations :

    • xnew = p.x * cos(angle) - p.y * sin(angle)
    • ynew = p.x * sin(angle) p.y * cos(angle)
  3. Traduire le point à son original coordonnées via p.x = xnew cx et p.y = ynew cy.

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!

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