Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Rotation av former | Geometriska transformationer
Geometrisk Modellering med Python

Rotation av former

Svep för att visa menyn

För att rotera en geometrisk figur, såsom en polygon, runt en punkt (ofta origo), används en specifik matematisk formel. När du roterar en punkt (x, y) runt origo med en vinkel θ (mätt i radianer), beräknas de nya koordinaterna (x', y') enligt följande:

  • x' = x * cos(θ) - y * sin(θ);
  • y' = x * sin(θ) + y * cos(θ).

Denna formel härleds från trigonometri och beskriver hur varje punkt rör sig längs en cirkulär båge centrerad vid origo. I Python kan du använda modulen math för att komma åt funktionerna sinus och cosinus, och vinkeln måste anges i radianer för dessa funktioner.

Tillämpa denna formel steg för steg. Antag att du vill rotera en triangel med hörn i (1, 0), (0, 1) och (-1, 0) med 90 grader (vilket är π/2 radianer) runt origo. För varje hörn sätter du in x- och y-värdena i formeln ovan och beräknar den nya positionen. Genom att göra detta för alla hörn får du den roterade triangeln.

Inom geometrisk modellering arbetar du ofta med polygoner representerade som listor av punkter. För att rotera en hel polygon tillämpar du rotationsformeln på varje hörn i listan. Detta tillvägagångssätt gör det möjligt att transformera vilken polygon som helst, oavsett antal sidor, genom att helt enkelt iterera genom dess punkter och uppdatera deras positioner.

12345678910111213141516171819202122232425
import 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)
question mark

Vilket påstående är sant om effekten av att rotera en polygon 90 grader runt origo?

Vänligen välj det korrekta svaret

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 2. Kapitel 3

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Avsnitt 2. Kapitel 3
some-alt