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

Kombinering af Transformationer

Stryg for at vise menuen

Når du arbejder med geometriske figurer, skal du ofte anvende mere end én transformation på en figur. Denne proces kaldes transformationssammensætning. Rækkefølgen, hvori du anvender transformationerne—såsom translation, rotation og skalering—har stor betydning, fordi hver transformation ændrer figurens position, størrelse eller orientering på en måde, der påvirker den næste operation.

Antag, at du starter med en polygon og ønsker at translatere den (flytte den), derefter rotere den og til sidst skalere den. Hvis du ændrer rækkefølgen—f.eks. skalerer først, derefter roterer og til sidst translaterer—kan du ende med et helt andet resultat. Dette skyldes, at transformationer ikke er kommutative: A efterfulgt af B giver ikke altid det samme resultat som B efterfulgt af A.

For at kombinere transformationer anvender du hver enkelt på figuren i rækkefølge. Hvert trin bruger resultatet af det foregående trin som input. Denne tilgang gør det muligt at opbygge komplekse manipulationer ud fra simple operationer, men du skal altid være opmærksom på rækkefø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

Hvilken påstand beskriver bedst, hvorfor rækkefølgen af transformationer er vigtig, når de kombineres?

Vælg det korrekte svar

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 7

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Sektion 2. Kapitel 7
some-alt