Heim > Backend-Entwicklung > C++ > Wie drehe ich mit Allegro einen Punkt um einen anderen Punkt in 2D?

Wie drehe ich mit Allegro einen Punkt um einen anderen Punkt in 2D?

Barbara Streisand
Freigeben: 2024-12-09 17:26:20
Original
944 Leute haben es durchsucht

How to Rotate a Point Around Another Point in 2D Using Allegro?

Einen Punkt um einen anderen Punkt in 2D drehen

In der Computergrafik ist das Drehen eines Objekts um einen bestimmten Punkt ein üblicher Vorgang. In diesem Fall möchten Sie die vier Eckpunkte einer Karte mithilfe der Allegro-API drehen. Um dies zu erreichen, sollten Sie den folgenden Ansatz in Betracht ziehen:

旋转点函数

Sie können eine Funktion namens „rotate_point“ implementieren, um den Rotationsvorgang auf die gewünschte Weise auszuführen. Es werden die folgenden Parameter benötigt:

  • cx und cy: X- und Y-Koordinaten des Drehpunkts
  • angleInRads: Drehwinkel im Bogenmaß
  • p: Der Punkt zu sein gedreht

Implementierung:

Die Funktion „rotate_point“ subtrahiert zunächst den Drehpunkt vom angegebenen Punkt p. Dadurch wird der Punkt zum Ursprung des Koordinatensystems verschoben. Als nächstes führt es die Drehung unter Verwendung des Sinus und Kosinus des Drehwinkels durch. Schließlich wird der Drehpunkt wieder hinzugefügt, um den gedrehten Punkt zu erhalten.

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;
}
Nach dem Login kopieren

Durch Anwenden dieser Drehung auf die 4 Eckpunkte der Karte, Sie können ein gedrehtes Polygon erstellen, das zur Kollisionserkennung verwendet werden kann.

Das obige ist der detaillierte Inhalt vonWie drehe ich mit Allegro einen Punkt um einen anderen Punkt in 2D?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage