PDA

View Full Version : [OpenGL] una sfera fatta di magia :D


Broadband
26-06-2008, 12:30
Ciao ragazzi,
è da qualche tempo che sto studiando opengl. Il prof. mi ha chiesto una cosa in particolare, vi posto le esatte parole:

"P.S. ti ricordo l'esercizio che ti avevo chiesto: disegnare (magari
anche in wireframe) la superficie di una sfera composta da tanti
triangoli o da tanti quadrilateri. Se ci riesci, mi piacerebbe che tu
provassi anche a distorcere la sfera (matematicamente, ovvero
modificando il calcolo delle posizioni dei vertici dei triangoli) in
modo da schiacciarla sui poli.
Se vuoi scioccarmi fai in modo che lo schiacciamento generi due
concavita' in corrispondenza dei poli."

Ok devo sisegnare una sfera senza roba tipo glutSolidSphere. La settimana scorsa avevo fatto una cosa del genere: nel cap.2 del redbook mostra come approssimare una sfera attraverso un icosaedro (12 vertici e 20 facce triangolari). Per farlo ho specificato i vertici in un ordine corretto utilizzando glBegin (GL_TRIANGLES). Ma facendo in questo modo che vuol dire, matematicamente parlando, modificare il calcolo delle posizioni dei vertici? Io non ho fatto nessun calcolo, mi sono limitato a dire a opengl quali sono i vertici.

La domanda è: secondo voi esperti di OpenGL cosa intende esattamente il professore?

Spero di essere stato chiaro.
Ciao e grazie

stdecden
26-06-2008, 12:46
ogni punto sulla sfera puó essere calcolato matematicamento con le funzioni seno e coseno per esempio:

x = cos(45) * raggio;
y = cos(45) * raggio;
z = cos(45) * raggio;

cosí ottieni un punto della sfera a 45° in tutte le direzioni.
puoi anche modificare la funzione e calcolare una sfera schiacciata:


x = cos(45) * raggio;
y = cos(45) * raggio * .25;
z = cos(45) * raggio;

Broadband
26-06-2008, 17:37
ogni punto sulla sfera puó essere calcolato matematicamento con le funzioni seno e coseno per esempio:

x = cos(45) * raggio;
y = cos(45) * raggio;
z = cos(45) * raggio;

cosí ottieni un punto della sfera a 45° in tutte le direzioni.
puoi anche modificare la funzione e calcolare una sfera schiacciata:


x = cos(45) * raggio;
y = cos(45) * raggio * .25;
z = cos(45) * raggio;

ciao e grazie per la risposta.
Al momento ho parametrizzato le circonferenze che compongono la sfera. Tuttavia non mi risulta facile costruire i poligoni (traingoli o quads) su queste circonferenze.

Però sono fiducioso :D
bye
bro

71104
26-06-2008, 20:37
La domanda è: secondo voi esperti di OpenGL cosa intende esattamente il professore? OpenGL non c'entra niente, è tutta matematica. devi riuscire a trovare una funzione che generi un grafico inizialmente circolare/ellittico, poi però modificando un qualche parametro deve diventare a forma di "molare", cioè dev'essere una sorta di arco con un buco in cima; se immagini di far ruotare tale grafico attorno all'asse verticale di simmetria ottieni precisamente la forma geometrica chiesta dal professore: una sfera che, modificando un parametro, diventa schiacciata e bucata ai poli. non è molto difficile, devi solo trovare la funzione matematica giusta, che molto probabilmente sarà costituita dalla somma dell'equazione della circonferenza più qualcos'altro che, parametrizzato, possa generare tanto il grafico di una retta orizzontale quanto quello di una concavità. una parabola magari...?