Rotation af Former
Stryg for at vise menuen
For at rotere en geometrisk figur, såsom en polygon, omkring et punkt (ofte origo), anvendes en specifik matematisk formel. Når et punkt (x, y) roteres omkring origo med en vinkel θ (målt i radianer), beregnes de nye koordinater (x', y') således:
x' = x * cos(θ) - y * sin(θ);y' = x * sin(θ) + y * cos(θ).
Denne formel stammer fra trigonometri og beskriver, hvordan hvert punkt bevæger sig langs en cirkulær bue med centrum i origo. I Python kan du bruge modulet math for at få adgang til funktionerne sinus og cosinus, og vinklen skal være i radianer for disse funktioner.
Anvend denne formel trin for trin. Antag, at du ønsker at rotere en trekant med hjørnerne (1, 0), (0, 1) og (-1, 0) 90 grader (hvilket svarer til π/2 radianer) omkring origo. For hvert hjørne indsættes x- og y-værdierne i ovenstående formel, og den nye position beregnes. Ved at gøre dette for alle hjørner opnås den roterede trekant.
I geometrisk modellering arbejdes der ofte med polygoner repræsenteret som lister af punkter. For at rotere en hel polygon anvendes rotationsformlen på hvert hjørne i listen. Denne metode gør det muligt at transformere enhver polygon, uanset antal sider, blot ved at gennemløbe dens punkter og opdatere deres positioner.
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)
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat