No non funziona così.Originariamente inviato da shmk
Infatti il codice non è mio![]()
Cmq l'oggetto da muovere è una mesh poligonale di un programma per la realizzazione di grafica 3d.
L'unica cosa che so è che l'oggetto, data la matrice di trasformazione nel primo post, si ruota di 5° sulla X.
E vorrei capire se c'è una formula per ricavare il numero "5°" da quella matrice.
ti posto alcuni link su cui studiare e poi "capire" come funziona il codice che stai vedendo:
matrici:
http://www.clickitaliansoftware.net/...rici/index.htm
vettori:
http://www.clickitaliansoftware.net/...tori/index.htm
dici che si ruota sull'asse x di 5° ma non è così che funziona.
Ti faccio un esempio:
Una rotazione su uno dei 3 assi, (non hai specificato cosa è usato nel code, "manuale" ,Opengl o directx), per esempio in directx
D3DXMatrixRotationX(&mat, angle);
angle è un float < o > angle l'oggetto ruota a sn o dx ma non di tot gradi in quanto è una rotazione "non arbitraria".
Per usare uno spostamento in gradi devi per esempio fare un dotproduct è il risultato lo devi convertire in gradi in quanto il risultato è sempre in radianti.
Ti ripeto non è una cosa semplice è un'argomento vastissimo.
posta un pò di code per rendere conto di cosa "si usa" per effettuare gli spostamenti per poterti aiutare... così non è semplice da capire per chi legge.
La traslazione è lo spostamento dell'oggetto della sua posizione nello spazio 3d.
la rotazione è appunto la rotazione nel punto di posizione senza spostamento.
La scalatura è il ridimensionamento di una mesh di default è:
D3DMatrixScaling(&mat, 1.0f, 1.0f, 1.0f);// dimensione reale dell'esportazione della mesh.x con il tool con cui è stata creata.
D3DMatrixScaling(&mat, 2.0f, 2.0f, 2.0f) in questo modo la mesh è circa il doppio nel render.
per aiutarti dovresti postare un pò di code per capire che tecnica si usa.
Poi leggo "C" nel titolo... forse non è nè OGL nè directx!

Rispondi quotando