Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Combinazione di trasformazioni | Trasformazioni Geometriche
Modellazione Geometrica con Python

Combinazione di trasformazioni

Scorri per mostrare il menu

Quando si lavora con forme geometriche, spesso è necessario applicare più di una trasformazione a una forma. Questo processo è chiamato composizione delle trasformazioni. L'ordine in cui si applicano le trasformazioni—come traslazione, rotazione e scalatura—è molto importante, perché ogni trasformazione modifica la posizione, la dimensione o l'orientamento della forma in modo che influisce sull'operazione successiva.

Supponiamo di partire da un poligono e volerlo traslare (spostare), poi ruotare e infine scalare. Se si cambia l'ordine—ad esempio, prima scalare, poi ruotare e infine traslare—si può ottenere un risultato molto diverso. Questo perché le trasformazioni non sono commutative: A seguita da B non dà sempre lo stesso risultato di B seguita da A.

Per combinare le trasformazioni, si applica ciascuna di esse alla forma in sequenza. Ogni passaggio utilizza il risultato del passaggio precedente come input. Questo approccio permette di costruire manipolazioni complesse a partire da operazioni semplici, ma è sempre necessario prestare attenzione all'ordine.

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

Quale affermazione descrive meglio perché l'ordine di applicazione delle trasformazioni è importante quando si combinano?

Seleziona la risposta corretta

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 2. Capitolo 7

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

Sezione 2. Capitolo 7
some-alt