13.07.2015 Views

Manual de Apoio 2010

Manual de Apoio 2010

Manual de Apoio 2010

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Figura 10.12: Curva <strong>de</strong> Bézier 2D10.2.5 Superfícies 3DA forma <strong>de</strong> criar uma superfície <strong>de</strong> Bézier é muito semelhante à criação das curvas. Adicionamos apenas oparâmetro v que correspon<strong>de</strong> a um segundo domínio. O código completo do exemplo seguinte po<strong>de</strong> ser consultadono Apêndice C.8 referente ao programa Bezier3D.java.A diferença, à partida, em relação ao exemplo Bezier2D, é que neste utilizamos 3 conjuntos <strong>de</strong> 3 pontos <strong>de</strong>controlo cada.Começamos então por <strong>de</strong>finir os pontos <strong>de</strong> controlo, 3 na direcção <strong>de</strong> u por 3 na direcção <strong>de</strong> v:// Definir Pontos <strong>de</strong> ControloctrlPoints = new GLVectorList ();// v0ctrlPoints . add ( -4f, 0f, 4f); // Start (u0)ctrlPoints . add ( -2f, 4f, 4f); // Control (u0)ctrlPoints . add (4f, 0f, 4f); // End (u0)// v1ctrlPoints . add ( -4f, 0f, 0f); // Start (u1)ctrlPoints . add ( -2f, 4f, 0f); // Control (u1)ctrlPoints . add (4f, 0f, 0f); // End (u1)// v2ctrlPoints . add ( -4f, 0f, -4f); // Start (u2)ctrlPoints . add ( -2f, 4f, -4f); // Control (u2)ctrlPoints . add (4f, 0f, -4f); // End (u2)Seguidamente geramos o mapa bidmimensional <strong>de</strong> pontos para a superfície, utilizando a função glMap2f como primeiro argumento tendo o valor GL2.GL MAP2 VERTEX 3, em vez da função glMap1f, da seguinte forma:float umin = 0f; // Valor minimo do ufloat umax = 10f; // Valor maximo do ufloat vmin = 0f; // Valor minimo do vfloat vmax = 10f; // Valor maximo do vgl. glMap2f (GL2 . GL_MAP2_VERTEX_3 , // Tipo <strong>de</strong> dados geradosumin , // Valor minimo do uumax , // Valor maximo do u108

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!