Proveniente da altro thread. Sposto in nuovo argomento per chiarezza di chi cerca/legge.
Gente, nel link Essential Mathematics for Computational Design [McNeel Wiki] che ha pubblicato sempre il prezioso Emilio, c’è tutto per gestire le matrici con GH.
Riporto qualche passaggio per agevolare future ricerche in modo rapido.
Costruire una matrice:
Si parte sempre dalla matrice identità, ovvero quello che in matematica si chiama elemento neutro del prodotto, ovvero 1 (per la somma l’elemento neutro è 0). Come vedete, se non si specificano valori in input V del componente Matrix il risultato è la geometria di partenza:
Il prodotto scalare tra la matrice della geometria (matrice X) e la matrice di trasformazione M può essere effettuato equivalentemente con
oppure con
e il risultato non cambia:
Si noti che il punto è descritto da una matrice 3x1 e quindi il prodotto scalare non potrebbe essere effettuato con una matrice 4x4. E’ evidente che in base alla geometria la matrice di trasformazione deve essere ridotta ad una matrice 1x3 e questo perché ovviamente non ha senso effettuare la scala di un punto.
Traslare un oggetto usando un vettore spostamento con punto di applicazione coincidente con l’origine degli assi:
Una rotazione rigida attorno a z:
La scala:
Faccio notare come la presenza della geometria non implica interferenze con la corretta visualizzazione della matrice di trasformazione poiché questa prescinde dalla geometria:
L’operazione di riflessione:
Proiezione:
ed infine una serie di trasformazioni e soltanto dopo avere ottenuto la matrice di trasformazione complessiva (con il comando C#) si applica la geometria.
Oggi però è utilizzabile il comando Compound per effettuare il prodotto tra le matrici con il medesimo effetto, provato adesso:
e pare funzionare anche invertendo l’ordine di esecuzione dei prodotti.