Creazione di un motore grafico 3D
Ciao a tutti,
Sto facendo un piccolo cad in VB2009, il bidimensionale (X,Y) l'ho fatto e funziona, ora vorrei integrare il terzo asse (Z).
Qualcuno mi può spiegare o almeno indicare qualche pagina web da visitare per capire come si fa a disegnare nelle 2 dimensioni oggetti 3d tenendo conto che la prospettiva deve essere corretta, lo scopo finale è quello di poter modificare i tre valori ancolari A,B,C in modo da poter ruotare gli oggetti in tutte le direzioni.
Grazie.
Sto facendo un piccolo cad in VB2009, il bidimensionale (X,Y) l'ho fatto e funziona, ora vorrei integrare il terzo asse (Z).
Qualcuno mi può spiegare o almeno indicare qualche pagina web da visitare per capire come si fa a disegnare nelle 2 dimensioni oggetti 3d tenendo conto che la prospettiva deve essere corretta, lo scopo finale è quello di poter modificare i tre valori ancolari A,B,C in modo da poter ruotare gli oggetti in tutte le direzioni.
Grazie.
Risposte
Quali sono esattamente gli scopi della tua applicazione? Quali sono le tue conoscenze di geometria?
Devo disegnare linee e archi che ovviamente verranno rappresentati con curve in un piano 3d in grado di ruotare attorno ai tre assi, le mie conoscenze di geometria sono discrete ma preferisco la trigonometria.
Diciamo che impostando i valori di A,B,C e le coordinate X,Y nel piano dell'origine mi basta sapere la formula che inserendo i valori X,Y,Z del punto da rappresentare mi consenta di ottenere le coordinate X,Y relative al piano per disegnare il punto
Non è sufficiente per determinare le coordinate del punto. Dovresti anche definire una base sul piano.
Diciamo che come base pensavodi considerare es.:
-Considerando un piano (2d) di 1000x1000
-Posizione dell'origine 500x500
-Con A=0 B=0 C=0 l'asse X è in orizzontale (quindi corrisponde all'asse X del piano 2d) l'asse Y è in verticale (quindi corrisponde all'asse Y del piano 2d) e di conseguenza l'asse Z (viene verso di me che sto guardando il piano 2d)
-Partendo quindi con queste clausole intendo creare il piano in funzione dei tre angoli
-Considerando un piano (2d) di 1000x1000
-Posizione dell'origine 500x500
-Con A=0 B=0 C=0 l'asse X è in orizzontale (quindi corrisponde all'asse X del piano 2d) l'asse Y è in verticale (quindi corrisponde all'asse Y del piano 2d) e di conseguenza l'asse Z (viene verso di me che sto guardando il piano 2d)
-Partendo quindi con queste clausole intendo creare il piano in funzione dei tre angoli
Non mi è per niente chiaro come definisci il piano. Pensavo che A, B, C fossero i valori nell'equazione cartesiana del piano: Ax + By + Cz + D = 0. Ma non si possono avere A, B e C contemporaneamente nulli con questa rappresentazione. Inoltre mi sembra che tu stia cercando di rappresentare tutto un sistema di riferimento e non un piano. Di che angoli stai quindi parlando? Coordinate sferiche?
Per ABC intendo gli angoli canonici degli assi cartesiani, A ruota attorno all'asse X , B asse Y e C asse Z.
Quindi se volessi ruotare il piano XYZ attorno all'asse X modificherei il valore di A ecc...
Quindi se volessi ruotare il piano XYZ attorno all'asse X modificherei il valore di A ecc...
Quello che stai allora rappresentando non è un piano ma una rotazione in 3D. Un metodo potrebbe essere quello di invertire la rotazione. Se scrivi la rotazione in forma matriciale è sufficiente fare la trasposta (essendo una trasformazione ortogonale). Quindi, se $A$ è la tua rotazione e P è il punto nello spazio. Allora $A^TP$ è il punto prima della rotazione.