HOME OGGETTI 3D LIBRI CORSI TUTORIAL FORUM SHOP CONTATTI   LOGIN









Autore Topic: LA MATRICE DI TRASFORMAZIONE XFORM  (Letto 1969 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

marcomasetti

  • Newbie
    ...sono qui da poco, il mio miglior amico è il pulsante RICERCA
  • *
  • Post: 183
LA MATRICE DI TRASFORMAZIONE XFORM
« il: 22 Giugno 2012, 09:24 »
La costruzione di oggetti GDL fa largo uso degli spostamenti. Infatti un oggetto GDL è formato di più parti che vengono assemblate e ciascuna parte deve essere posizionata in modo appropriato.
La matrice di trasformazione XFORM applica agli oggetti 3D una trasformazione lineare dello spazio. Le trasformazioni lineari comprendono sia le affinità (cioè trasformazioni che cambiano gli angoli e le unità di misura, contraendo o allungando lungo certe direzioni, dove viene comunque mantenuto il parallelismo), che gli spostamenti: traslazioni o rotazioni.
Il vantaggio di utilizzare anche per gli spostamenti la matrice XFORM permette di compiere in un unico passaggio combinazioni di rotazioni e traslazioni che richiederebbero diversi comandi ROT e ADD.
Dato che il calcolatore, nel posizionare gli oggetti, ogni volta si riferisce all’ultima posizione del sistema di assi, che è stato trascinato assieme all’oggetto, rototraslazioni complesse diventano un rompicapo se si usano i comandi ROT e ADD.
La matrice XFORM ha la forma:
XFORM  a11, a21, a31, a41
               a12, a22, a32, a42
               a13, a23, a33, a43
L’ultima colonna:
(a41, a42, a43)
e’ il vettore spostamento che fornisce la nuova origine degli assi.
La prima colonna
(a11, a21, a31)
definisce il nuovo asse x, pertanto se è un versore, cioè sqr(a11^2+ a21^2+ a31^2)=1,
allora non variano le dimensioni lungo le rette parallele all’asse x.
Se invece sqr(a11^2+ a21^2+ a31^2)=L, se L>1 si avrà allungamento lungo l’asse x, per cui lungo tale asse la misura originaria m diventerà m*L.
Analogamente la seconda e terza colonna definiscono rispettivamente i nuovi assi y,z.
Pertanto applicare la matrice XFORM significa effettuare questa operazione:
xx= a11*x+a21*y+a31*z+a41
yy= a12*x+a22*y+a32*z+a42
zz= a13*x+a23*y+a33*z+a43
dove xx,yy,zz sono le nuove coordinate del punto che aveva coordinate x,y,z.
Infatti, ad esempio, il punto (1,0,0) che definiva il versore dell’asse x originario diventa:
(a11+a41, a12+a42, a13+a43)= (a41, a42, a43)+(a11, a12, a13)
Cioè il vettore spostamento dell’origine più il nuovo vettore in cui è stato trasformato il versore di riferimento dell’asse x originario.

Gli oggetti GDL, anche se costituiti da una unica primitiva, se esportati in autocad e richiamati come oggetti GDL si spezzano in diverse combinazioni delle triangolazioni:
PLANE 3,  x1,y1,z1,  x2,y2,z2,  x3,y3, z3
Pertanto come esempio utilizziamo tale PLANE.
Devono essere definiti i valori aij e x1,y1,z1, x2,y2,z2,x3,y3,z3
1)   Formula algebrica
xx1= a11*x1+a21*y1+a31*z1+a41
yy1= a12*x1+a22*y1+a32*z1+a42
zz1= a13*x1+a23*y1+a33*z1+a43
xx2= a11*x2+a21*y2+a31*z2+a41
yy2= a12*x2+a22*y2+a32*z2+a42
zz2= a13*x2+a23*y2+a33*z2+a43
xx3= a11*x3+a21*y3+a31*z3+a41
yy3= a12*x3+a22*y3+a32*z3+a42
zz3= a13*x3+a23*y3+a33*z3+a43
PLANE 3,  xx1,yy1,zz1,  xx2,yy2,zz2,  xx3,yy3, zz3

2)   Formula con XFORM

XFORM  a11, a21, a31, a41
               a12, a22, a32, a42
               a13, a23, a33, a43
PLANE 3,  x1, y1,z1,  x2,y2,z2,  x3,y3, z3
Le formule 1) e 2) dovrebbero fornire lo stesso risultato.
Tuttavia, anche se più lunga da scrivere, la formula 1) è molto più generale, permette infatti di applicare non solo trasformazioni lineari, ma qualsiasi tipo di trasformazione:
xx1= f1(x1,y1,z1)
yy1= f2(x1,y1,z1)
zz1= f3(x1,y1,z1)
xx2= f1(x2,y2,z2)
yy2= f2(x2,y2,z2)
zz2= f3(x2,y2,z2)
xx3= f1(x3,y3,z3)
yy3= f2(x3,y3,z3)
zz3= f3(x3,y3,z3)
PLANE 3,  xx1,yy1,zz1,  xx2,yy2,zz2,  xx3,yy3,zz3
Dove f1,f2,f3 sono funzioni a tre variabili.

Mi limito ad allegare come esempio una rotazione multipla:
!oggetto abbassato roty di t gradi antiorario, ruotato rotz di f gr. antio., con rollio di r gr. antio.
XFORM cos(f)*cos(t)*cos(r)-sin(f)*sin(r),-cos(f)*cos(t)*sin(r)-sin(f)*cos(r), cos(f)*sin(t), 0,         
             sin(f)*cos(t)*cos(r)+cos(f)*sin(r),-sin(f)*cos(t)*sin(r)+cos(f)*cos(r), sin(f)*sin(t), 0,
             -sin(t)*cos(r)                     ,                      sin(t)*sin(r),        cos(t), 0

Allego alcuni esempi di oggetti GDL sugli spostamenti
Grazie dell'attenzione     Prof Marco Masetti
Se volete saperne di più su di me visitate i blog:

http://marcomasettiprospettico.wordpress.com/
http://oggettigeometricigdl.wordpress.com/