Scalatura delle forme
Scorri per mostrare il menu
La scalatura è una trasformazione geometrica fondamentale che modifica la dimensione di una forma mantenendone la struttura complessiva. Quando si applica la scalatura a una figura geometrica, ogni punto della forma si avvicina o si allontana da un punto fisso, solitamente l'origine, di un fattore specifico. Questo processo può essere uniforme, dove tutte le dimensioni vengono scalate dello stesso fattore, oppure non uniforme, dove le diverse dimensioni vengono scalate con fattori differenti.
Nella scalatura uniforme, ogni coordinata di ciascun punto viene moltiplicata per lo stesso valore. Questo mantiene inalterate le proporzioni della forma, quindi un quadrato rimane un quadrato e un cerchio rimane un cerchio—solo più grande o più piccolo. Nella scalatura non uniforme, ogni asse delle coordinate può avere un fattore di scala diverso. Ad esempio, si può allungare un rettangolo orizzontalmente mantenendo invariata l'altezza, trasformandolo in un rettangolo più largo.
Le trasformazioni di scalatura sono comunemente utilizzate in grafica computerizzata, modellazione e design per ridimensionare oggetti o modificarne le proporzioni. Quando si scala una forma, area e perimetro cambiano in modo prevedibile: per una scalatura uniforme di fattore k, il perimetro viene moltiplicato per k e l'area per k^2. Tuttavia, la scalatura non uniforme può distorcere la forma, modificando angoli e lunghezze relative dei lati.
12345678910111213141516171819202122232425262728import numpy as np import matplotlib.pyplot as plt def scale_polygon(vertices, scale_x, scale_y): scale_matrix = np.array([[scale_x, 0], [0, scale_y]]) return vertices @ scale_matrix.T # Define a triangle triangle = np.array([[1, 1], [3, 1], [2, 3], [1, 1]]) # Uniform scaling by factor 2 scaled_uniform = scale_polygon(triangle, 2, 2) # Non-uniform scaling: x by 2, y by 0.5 scaled_nonuniform = scale_polygon(triangle, 2, 0.5) # Plot original and scaled triangles plt.figure(figsize=(6, 6)) plt.plot(triangle[:,0], triangle[:,1], 'o-', label='Original') plt.plot(scaled_uniform[:,0], scaled_uniform[:,1], 'o-', label='Uniform scale (2x)') plt.plot(scaled_nonuniform[:,0], scaled_nonuniform[:,1], 'o-', label='Non-uniform scale (2x, 0.5y)') plt.legend() plt.axis('equal') plt.title('Scaling Transformations of a Triangle') plt.xlabel('X') plt.ylabel('Y') plt.show()
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione