Rotation von Formen
Swipe um das Menü anzuzeigen
Um eine geometrische Figur, wie zum Beispiel ein Polygon, um einen Punkt (häufig den Ursprung) zu drehen, wird eine spezielle mathematische Formel verwendet. Wenn ein Punkt (x, y) um den Ursprung um einen Winkel θ (im Bogenmaß) gedreht wird, berechnen sich die neuen Koordinaten (x', y') wie folgt:
x' = x * cos(θ) - y * sin(θ);y' = x * sin(θ) + y * cos(θ).
Diese Formel stammt aus der Trigonometrie und beschreibt, wie sich jeder Punkt entlang eines Kreisbogen bewegt, dessen Mittelpunkt der Ursprung ist. In Python kann das math-Modul verwendet werden, um auf die Funktionen sinus und cosinus zuzugreifen; der Winkel muss dabei im Bogenmaß angegeben werden.
Wende diese Formel schrittweise an. Angenommen, ein Dreieck mit den Eckpunkten (1, 0), (0, 1) und (-1, 0) soll um 90 Grad (das entspricht π/2 Bogenmaß) um den Ursprung gedreht werden. Für jeden Eckpunkt werden die x- und y-Werte in die obige Formel eingesetzt und die neue Position berechnet. Durch diese Berechnung für alle Eckpunkte erhält man das gedrehte Dreieck.
Im geometrischen Modellieren arbeitet man häufig mit Polygonen, die als Listen von Punkten dargestellt werden. Um ein ganzes Polygon zu drehen, wird die Rotationsformel auf jeden Eckpunkt in der Liste angewendet. Mit diesem Ansatz kann jedes Polygon, unabhängig von der Anzahl der Seiten, durch einfaches Durchlaufen seiner Punkte und Aktualisieren der Positionen transformiert werden.
12345678910111213141516171819202122232425import math def rotate_polygon(points, angle_radians): """Rotate a polygon around the origin by a specified angle. Args: points: List of (x, y) tuples representing the polygon's vertices. angle_radians: The rotation angle in radians. Returns: List of (x', y') tuples representing the rotated vertices. """ cos_theta = math.cos(angle_radians) sin_theta = math.sin(angle_radians) rotated = [] for x, y in points: x_new = x * cos_theta - y * sin_theta y_new = x * sin_theta + y * cos_theta rotated.append((x_new, y_new)) return rotated # Example usage: triangle = [(1, 0), (0, 1), (-1, 0)] rotated_triangle = rotate_polygon(triangle, math.pi / 2) print(rotated_triangle)
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen