Rotation eines Punktes um einen anderen Punkt im 2D-Raum
Um ein Kartenspiel zu entwickeln, bei dem sich Karten auffächern, trifft eine Person aufeinander ein Dilemma bei der Bestimmung, welche Karte unter dem Cursor liegt. Dieses Dilemma erfordert eine Möglichkeit, die vier Scheitelpunkte der Karte zu drehen, um ein Polygon zur Kollisionserkennung zu bilden.
Um diese Drehung zu erleichtern, bietet die Allegro-API eine praktische Funktion:
al_draw_rotated_bitmap(OBJECT_TO_ROTATE, CENTER_X , CENTER_Y, X, Y, DEGREES_TO_ROTATE_IN_RADIANS)
Um die gedrehten Punkte jedoch manuell zu berechnen, muss eine Funktion entwickelt werden:
POINT rotation_point(float cx, float cy, float angle, POINT p)
wobei (cx, cy) den Drehpunkt darstellt, Winkel den Drehwinkel gegen den Uhrzeigersinn bezeichnet und p ist der ursprüngliche Punkt, der gedreht werden soll.
Der Kern der Lösung besteht darin, die folgenden Schritte auszuführen:
Führen Sie die Drehung mit dem aus Gleichungen:
Durch die Anwendung dieses Ansatzes kann die Funktion einen Punkt effektiv um jeden Drehpunkt auf einer 2D-Ebene drehen.
Das obige ist der detaillierte Inhalt vonWie dreht man einen Punkt um einen anderen Punkt im 2D-Raum?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!