HOME OGGETTI 3D LIBRI CORSI TUTORIAL FORUM SHOP CONTATTI   LOGIN









Autore Topic: Rotazioni 3D attorno ad assi verticali  (Letto 2054 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
Rotazioni 3D attorno ad assi verticali
« il: 23 Giugno 2012, 02:23 »
Le formule definite nel post dal titolo Movimenti sul piano possono essere adattate allo spazio, diventando rotazioni attorno ad assi paralleli a z.
Per esempio la formula sotto citata esprime la rotazione di una determinata forma dell’angolo be rispetto x, antiorario, attorno all’asse verticale per (xc,yc,0)
rotz be
add –xc +xc*cos(be)+ yc*sin(be) , -yc+ yc*cos(be)-xc*sin(be),0
“forma”
del 2

Alcune forme 3D predefinite, come il cilindro (CYLIND h, r), la sfera (SPHERE r) e l’ellissoide (ELLIPS h, r), sono posizionate in modo da avere l’asse z come asse di simmetria.
Volendo fare in modo che una di tali forme ruoti attorno a un’asse verticale passante per il punto C (xc,yc,0) ad una distanza d dell’angolo be rispetto l’asse x, possiamo applicare la formula:

add  x,y,0
rotz be
add –xc +xc*cos(be)+ yc*sin(be) , -yc+ yc*cos(be)-xc*sin(be),0
CYLIND h, r
del 3

Immaginando che il punto C si trovi in posizione (-d,0,0), il cilindro avrà rispetto ad esso la posizione (relativa) richiesta, poi dovrà ruotare di be, infine il tutto dovrà essere traslato di (d+xc,yc,0), per porre il punto C nella posizione effettiva, per cui la formula diventerà:
add  d+xc,yc,0
rotz be
add d-d*cos(be), d*sin(be),0
CYLIND h, r
del 3

Tuttavia in questo caso è più semplice utilizzare la formula equivalente:
add  xc,yc,0
rotz be
addx d
CYLIND h, r
del 3
Infatti dopo la rotazione di be il vettore (-d*cos(be), d*sin(be),0) corrisponde al vettore iniziale (-d,0,0),
per cui gli spostamenti corrispondenti si annullano a vicenda.

Questa formula è stata utilizzata per l’oggetto gsm allegato: iterazioni su crf
Allego altri due oggetti sugli spostamenti.

A titolo di esempio inserisco alcune semplici formule che possono essere utili.
1 -------------------------------------
!specchiatura su piano//xy di quota z
addz 2*z
mulz -1

2 -------------------------------------
!rotazione ang.f antio. rispetto y attorno asse parallelo a y di equazione x,z
roty f
addz -z+x*sin(f)+z*cos(f)
addx -x+x*cos(f)-z*sin(f)

3--------------------------------------
!rotazione ang.f orario rispetto y attorno asse parallelo a y di equazione x,z
roty -f
addz -z-x*sin(f)+z*cos(f)
addx -x+x*cos(f)+z*sin(f)

4--------------------------------------
!rotazione ang.f antio. rispetto z attorno asse parallelo a z di equazione x,y
rotz f
addx -x+x*cos(f)+y*sin(f)
addy -y+y*cos(f)-x*sin(f)

5--------------------------------------
!rotazione ang.f antio. rispetto x attorno asse parallelo a x di equazione y,z
rotx f
addy -y+z*sin(f)+y*cos(f)
addz -z+z*cos(f)-y*sin(f)

« Ultima modifica: 24 Giugno 2012, 19:29 da marcomasetti »