Kombinieren von Transformationen
Swipe um das Menü anzuzeigen
Bei der Arbeit mit geometrischen Formen ist es oft notwendig, mehr als eine Transformation auf eine Form anzuwenden. Dieser Vorgang wird als Transformationen-Kombination bezeichnet. Die Reihenfolge, in der Transformationen wie Verschiebung, Rotation und Skalierung angewendet werden, ist von großer Bedeutung, da jede Transformation die Position, Größe oder Ausrichtung der Form so verändert, dass sie die nächste Operation beeinflusst.
Angenommen, Sie beginnen mit einem Polygon und möchten es zunächst verschieben, dann rotieren und schließlich skalieren. Wenn Sie die Reihenfolge ändern – zum Beispiel zuerst skalieren, dann rotieren und dann verschieben – kann das Ergebnis völlig anders ausfallen. Das liegt daran, dass Transformationen nicht kommutativ sind: A gefolgt von B ergibt nicht immer dasselbe wie B gefolgt von A.
Um Transformationen zu kombinieren, wenden Sie jede einzelne nacheinander auf die Form an. Jeder Schritt verwendet das Ergebnis des vorherigen Schritts als Eingabe. Mit diesem Ansatz lassen sich komplexe Manipulationen aus einfachen Operationen aufbauen, wobei jedoch stets auf die Reihenfolge geachtet werden muss.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647import 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()
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen