Come ruotare una figura geometrica in Python

Per ruotare una figura geometrica in Python, o qualsiasi altro linguaggio di programmazione, uso la matrice di rotazione.

Cos'è la matrice di rotazione? E' un concetto di algebra lineare che trasforma le coordinate di un punto da un riferimento cartesiano a un altro. E' molto utile nella grafica vettoriale.

La matrice di rotazione mi permette di ruotare facilmente una figura geometrica sul piano.

    Un esempio pratico

    Per fare questo esempio uso alcune funzioni delle librerie numpy, math e matplotlib.

    from matplotlib import pyplot as plt
    from numpy import array, dot
    from math import cos, sin, radians

    Creo una figura geometrica sul piano cartesiano e la visualizzo con le funzioni plot() e show().

    X=[1,2,3,1]
    Y=[1,3,1,1]
    plt.xlim(-5, 5)
    plt.ylim(-5, 5)
    plt.plot(X,Y)
    plt.show()

    Si tratta di un semplice triangolo.

    un triangolo è una figura composta da tre punti

    Ora voglio ruotare il triangolo di 180°

    Per prima cosa, definisco l'array (bc) della base canonica del riferimento cartesiano.

    E' un array composto da due versori linearmente indipendenti che determinano tutti i punti del piano.

    bc=array([[1,0],[0,1]])

    Poi definisco l'angolo di rotazione ( 180° ).

    La funzione radians() trasforma la misura dell'angolo da gradi a radianti.

    a=radians(180)

    A partire dall'angolo di rotazione, creo la matrice di rotazione.

    Per farlo utilizzo le funzioni trigonometriche seno e coseno del modulo math.

    mr=array([[cos(a),sin(a)],[-sin(a),cos(a)]])
    mr=dot(mr,bc)

    A questo punto, creo un loop per leggere le coordinate dei punti x,y della figura geometrica iniziale.

    Poi moltiplico ogni coordinata (x,y) per la matrice di rotazione (mr).

    X2=[]
    Y2=[]
    for j,k in zip(X,Y):
    p1=array([j,k])
    p2=dot(mr,p1)
    X2.append(p2[0])
    Y2.append(p2[1])

    Ottengo così le coordinate dei punti della figura geometrica ruotata di 180° e le salvo nelle liste X2, Y2.

    Infine, stampo sullo schermo le nuove coordinate dei punti e i segmenti della figura ruotata.

    plt.plot(X2,Y2)
    plt.show()

    Ho così disegnato sullo schermo la figura geometrica ruotata di 180°.

    la rotazione della figura geometrica

    Cambiando la variabile (a) posso ruotare la figura in ogni angolazione.

    Posso anche modificare le coordinate dell'origine per traslare la figura sul piano.

    la rotazione completa della figura geometrica

    E così via.

    Nota. In questi appunti ho implementato la matrice di rotazione con python. Lo stesso metodo di visualizzazione può comunque essere realizzato con qualsiasi altro linguaggio di programmazione ( Java, C, ecc. ).

     


     

    Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

    FacebookTwitterLinkedinLinkedin
    knowledge base

    Matplotlib