Rotazione delle forme
Scorri per mostrare il menu
Per ruotare una figura geometrica, come un poligono, attorno a un punto (spesso l'origine), si utilizza una formula matematica specifica. Quando si ruota un punto (x, y) attorno all'origine di un angolo θ (misurato in radianti), le nuove coordinate (x', y') si calcolano come segue:
x' = x * cos(θ) - y * sin(θ);y' = x * sin(θ) + y * cos(θ).
Questa formula deriva dalla trigonometria e descrive come ogni punto si muove lungo un arco circolare centrato sull'origine. In Python, è possibile utilizzare il modulo math per accedere alle funzioni seno e coseno, e l'angolo deve essere espresso in radianti per queste funzioni.
Applicare questa formula passo dopo passo. Supponiamo di voler ruotare un triangolo con vertici in (1, 0), (0, 1) e (-1, 0) di 90 gradi (che corrisponde a π/2 radianti) attorno all'origine. Per ciascun vertice, si sostituiscono i valori di x e y nella formula sopra e si calcola la nuova posizione. Ripetendo questa operazione per tutti i vertici si ottiene il triangolo ruotato.
Nella modellazione geometrica, spesso si lavora con poligoni rappresentati come liste di punti. Per ruotare un intero poligono, si applica la formula di rotazione a ciascun vertice della lista. Questo approccio consente di trasformare qualsiasi poligono, indipendentemente dal numero di lati, semplicemente iterando tra i suoi punti e aggiornando le loro posizioni.
12345678910111213141516171819202122232425import math def rotate_polygon(points, angle_radians): """Rotate a polygon around the origin by a specified angle. Args: points: List of (x, y) tuples representing the polygon's vertices. angle_radians: The rotation angle in radians. Returns: List of (x', y') tuples representing the rotated vertices. """ cos_theta = math.cos(angle_radians) sin_theta = math.sin(angle_radians) rotated = [] for x, y in points: x_new = x * cos_theta - y * sin_theta y_new = x * sin_theta + y * cos_theta rotated.append((x_new, y_new)) return rotated # Example usage: triangle = [(1, 0), (0, 1), (-1, 0)] rotated_triangle = rotate_polygon(triangle, math.pi / 2) print(rotated_triangle)
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