Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Kombinere Transformasjoner | Geometriske transformasjoner
Geometrisk Modellering med Python

Kombinere Transformasjoner

Sveip for å vise menyen

Når du arbeider med geometriske former, må du ofte bruke mer enn én transformasjon på en form. Denne prosessen kalles transformasjonskomposisjon. Rekkefølgen du bruker transformasjoner i—som translasjon, rotasjon og skalering—har stor betydning, fordi hver transformasjon endrer formens posisjon, størrelse eller orientering på en måte som påvirker neste operasjon.

Anta at du starter med en polygon og ønsker å translere den (flytte den), deretter rotere den, og til slutt skalere den. Hvis du endrer rekkefølgen—f.eks. skalerer først, så roterer, deretter translerer—kan du ende opp med et helt annet resultat. Dette er fordi transformasjoner ikke er kommutative: A etterfulgt av B gir ikke nødvendigvis samme resultat som B etterfulgt av A.

For å kombinere transformasjoner, bruker du hver enkelt på formen i rekkefølge. Hvert steg bruker resultatet fra forrige steg som sitt input. Denne tilnærmingen lar deg bygge opp komplekse manipulasjoner fra enkle operasjoner, men du må alltid være oppmerksom på rekkefølgen.

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

Hvilket utsagn beskriver best hvorfor rekkefølgen på transformasjoner er viktig når de kombineres?

Velg det helt riktige svaret

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 2. Kapittel 7

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Seksjon 2. Kapittel 7
some-alt