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

Kombinera transformationer

Svep för att visa menyn

När du arbetar med geometriska former behöver du ofta tillämpa mer än en transformation på en form. Denna process kallas transformationskomposition. Ordningen i vilken du tillämpar transformationer—såsom translation, rotation och skalning—är mycket viktig, eftersom varje transformation ändrar formens position, storlek eller orientering på ett sätt som påverkar nästa operation.

Anta att du börjar med en polygon och vill translatera (flytta) den, sedan rotera den och slutligen skala den. Om du ändrar ordningen—till exempel skalar först, sedan roterar och därefter translaterar—kan du få ett helt annat resultat. Detta beror på att transformationer inte är kommutativa: A följt av B ger inte alltid samma resultat som B följt av A.

För att kombinera transformationer tillämpar du varje transformation på formen i tur och ordning. Varje steg använder resultatet från föregående steg som sin indata. Detta tillvägagångssätt gör det möjligt att bygga upp komplexa manipulationer från enkla operationer, men du måste alltid vara medveten om ordningen.

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
import numpy as np import matplotlib.pyplot as plt # Define a simple triangle polygon polygon = np.array([ [0, 0], [1, 0], [0.5, 1], [0, 0] ]) # Translation: move by (2, 1) def translate(points, tx, ty): return points + np.array([tx, ty]) # Rotation: rotate by theta degrees around origin def rotate(points, theta_deg): theta = np.radians(theta_deg) rotation_matrix = np.array([ [np.cos(theta), -np.sin(theta)], [np.sin(theta), np.cos(theta)] ]) return points @ rotation_matrix.T # Scaling: scale by (sx, sy) def scale(points, sx, sy): scaling_matrix = np.array([ [sx, 0], [0, sy] ]) return points @ scaling_matrix.T # Apply transformations translated = translate(polygon, 2, 1) rotated = rotate(translated, 45) scaled = scale(rotated, 1.5, 0.5) # Plotting plt.figure(figsize=(6, 6)) plt.plot(polygon[:, 0], polygon[:, 1], 'bo-', label='Original') plt.plot(translated[:, 0], translated[:, 1], 'go-', label='Translated') plt.plot(rotated[:, 0], rotated[:, 1], 'ro-', label='Rotated') plt.plot(scaled[:, 0], scaled[:, 1], 'mo-', label='Scaled') plt.legend() plt.axis('equal') plt.title('Combining Translation, Rotation, and Scaling') plt.show()
question mark

Vilket påstående beskriver bäst varför ordningen för att tillämpa transformationer är viktig när de kombineras?

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 7

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 7
some-alt