Tu sei qui

Script in Python per griglie su Rhinoceros


 

Studiando come una griglia di parametri gestisca la costruzione di una superficie parametrica, e possa essere il principio per la costruzione grafica della stessa.

 
Rappresentazione parametrica di una superficie
 
Nella lezione sulle curve nello spazio, si è detto che un parametro secondo cui variano tre funzioni coordinate genera una curva nello spazio.
Analogamente (lezione dell’11.11.2013), due parametri generano nello spazio una superficie, così descrivibile:
 
formula_01.gif
 
Mentre una curva parametrica è disegnata da una funzione applicata ad un intervallo unidimensionale, nel caso della superficie è un prodotto cartesiano di parametri a variare e dare i dati della curva attraverso una funzione, come nel disegnino tratto dagli appunti:
 
 
appunti_01.jpg
 
Le frecce rosse trai parametri e il grafico sono il nostro oggetto di studio.
 
 
Superfici parametriche in Python per Rhinoceros
 
La verisione 5 di Rhinoceros supporta lo scripting in Python, un linguaggio di programmazione che a un utente “amatoriale” come me è sembrato di utilizzo più immediato di altri. Integra una libreria di operazioni proveniente da RhinoScript, linguaggio già inserito in Rhino nelle versioni precedenti, con tutte le operazioni che si possono trovare nell’interfaccia grafica del programma. Anche Grasshopper può espandere le proprie operazioni attraverso Python.
 
Attraverso questo strumento, e le nozioni a riguardo date dal corso di Metodi e modelli matematici per le applicazioni seguito in facoltà nel 2012, avevo già descritto insiemi di punti discreti corrispondenti ad una griglia cartesiana del tipo uOv.
Tuttavia, avevo lavorato per lo più empiricamente, utilizzando la forma z = f (x,y), ma senza giungere esplicitamente a tre funzioni coordinate ognuna dipendente da due parametri.
Quello che già avevo abbastanza chiaro era invece che lo spostamento dei singoli parametri genera curve, poiché assegna ad uno dei due parametri un valore costante variando l’altro – di nuovo una variazione unidimensionale.
Ciò è di immediata comprensione se si pensa a una griglia – proprio come l’immagine dagli appunti ricorda –, e nell’uso di Python da me fatto in precedenza, usando valori interi di v ed u per indicare le coordinate, quindi immaginando organizzati in “righe” e “colonne” i punti a cui si può dare il nome di una singola coordinata.
 
Nel mio esercizio successivo alla lezione ho cercato passare ad uno strumento per disegnare superfici parametriche in Rhinoceros da punti discreti, collocati con densità arbitraria entro intervalli dati di u e v.
 
Dopo aver segnato alcune informazioni sul documento e importato le librerie (nell’ordine, una di linguaggio matematico, quella di RhinoScript e la possibilità di definire punti nello spazio in Rhinoceros), ho così definito il sistema di funzioni coordinate che descrive la superficie:
 
cod.1
codice_01.png
 
La flessibilità dello strumento è espressa dai punti 1 e 2:
1) si specifica, attraverso due intervalli coordinati, la porzione di piano cartesiano di parametri da cui ottenere la superficie
2) si indicano, come dipendenti dai parametri u e v, le tre funzioni coordinate che sono l’output generato “Funzione(…)”
Si vedono, come argomento di “Funzione(…)” le due grandezze M e N, intere, le quali indicano la “densità” di punti, come numero di segmenti in cui vogliamo sia diviso il piano parametrico uOv (i punti sono M+1 ed N+1).
A e B, interi, varieranno rispettivamente all’interno di M e N per ogni punto che sarà definito.
Le due formule che definiscono u e v prima dell’inserimento nelle funzioni coordinate, servono a trasformare gli spostamenti interi di A e B tra M ed N in spostamenti all’interno degli intervalli di u e v definiti subito prima.
 
Un’altra funzione, a cui sono date in argomento le dimensioni n e m della griglia, opera la variazione di a e b, passa a “Funzione(…)” i quattro argomenti e crea l’insieme di (m+1)x(n+1) matrici vettoriali chiamato “nodo”.
 
cod.2
codice_02.png
 
Infine altre funzioni possono ottenere l’elenco di punti generato da “Griglia(…)” per elaborare le immagini.
 
cod.3
codice_03.png
 
In questo caso, “Linee(…)” usa i punti per creare tra loro linee, con il sistema schematizzato nell’immagine; “Superficie(…)” sfrutta la funzione di RhinoScript “addSrfPtGrid”, la quale, nel creare una superficie, chiede come argomento le proporzioni, in termini di numero di punti, di una grigli.
La superficie va ad approssimare quella analiticamente definita per la creazione dei punti, con tanta più precisione quanti più sono i punti.
 
In fondo al codice, oltre ad una funzione che cancella ogni elemento precedentemente creato nell’ambiente di lavoro, si sceglie quale strumento di disegno utilizzare, ponendo in argomento le suddivisioni della griglia.
 
Definendo in maniere diverse e con nomi diversi la funzione in cod.1 – poi richiamata in cod.2 – si può creare una piccola libreria di oggetti definiti secondo griglie di punti su superfici parametriche S(u,v). Nella galleria di immagini, le prime due superfici sono tratte dalla lezione, una terza è il curioso risultato di giochi casuali con le funzioni coordinate…
 
 
 
lezione di riferimento
11.11.2013
data esercizio
11.11.2013
temi
rappresentazioni parametriche
superfici in ³
Python e Rhinoceros
allegati
Grapher: 11.11_01 cilind

 

CATEGORIE: 
Technology: