Duvidas em OpenGL - Curvas

5 respostas
Bruno_Olinda

ViniGodoy eu estou com problemas ainda no meu algoritmo de traçado de curvas.Eu peguei um exemplo na net mas ele não funciona porque não aceita GLfloat,acaba dando erro,você poderia mi dizer o q fazer ou mi indicar um local q eu encontre um algoritmo de traçado de curva, só falta ele.Obrigado. :smiley:

public void teste(){

GLfloat ctrl[4][4][3]={

{{0, 803, 0}, {0, 802, 20}, {0,814,40}, {0,804,60}} ,

{{20,803,0}, {20,833,20}, {20,805,40} ,{20,805,60}} ,

{{40,803,0}, {40,806,20} ,{40,845,40} ,{40,805,60}},

{{60,807,0}, {60,806,20} ,{60,826,40} ,{60,805,60}}};
//Essas 3 proximas linhas sao responsaveis pela construcao da curva.
        //Depois eu explico o significado de cada parâmetro
        gl.glMap2f(gl.GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4, ctrl[0][0][0]);
        gl.glMapGrid2f(50,0,1,50,0,1);
        gl.glEvalMesh2(gl.GL_FILL, 0,50,0,50);
        gl.glPointSize(4);
        gl.glBegin(gl.GL_POINTS);
            gl.glColor3f(1,0,0);
            for(int i=0; i<5; i++){
                for(int j=0; j<5; j++){
                    gl.glVertexfv(ctrl[i][j]);
                }
            }
        gl.glEnd();
    }

5 Respostas

Luca

Olá

  1. Quando você responde em um tópico, todos que dele participam recebem notificações por email. É muito mais fácil obter resposta seguindo o tópico já aberto antes

  2. Se seguir as dicas do forum, seu código ficará muito mais legível. Basta colocá-lo entre as tags Code

[]s
Luca

Bruno_Olinda
public void teste(){
GLfloat ctrl[4][4][3]={
{{0, 803, 0}, {0, 802, 20}, {0,814,40}, {0,804,60}} ,
{{20,803,0}, {20,833,20}, {20,805,40} ,{20,805,60}} ,
{{40,803,0}, {40,806,20} ,{40,845,40} ,{40,805,60}},
{{60,807,0}, {60,806,20} ,{60,826,40} ,{60,805,60}}};

//Essas 3 proximas linhas sao responsaveis pela construcao da curva.
//Depois eu explico o significado de cada parâmetro
gl.glMap2f(gl.GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4, ctrl[0][0][0]);
gl.glMapGrid2f(50,0,1,50,0,1);
gl.glEvalMesh2(gl.GL_FILL, 0,50,0,50);
gl.glPointSize(4);
gl.glBegin(gl.GL_POINTS);
gl.glColor3f(1,0,0);
for(int i=0; i<5; i++){
for(int j=0; j<5; j++){
gl.glVertexfv(ctrl[i][j]);
}
}
gl.glEnd();
}
T

Seu exemplo é em Java ou C++? Em C++ você usa GLfloat , mas acho que em Java você usaria float ou double.

Bruno_Olinda

É em Java mas quando mudo para float dá um erro na função glMap2f

T

Então veja qual é a declaração correta de glMap2f - se ela requerer float, por exemplo, você precisa passar variáveis ou constantes float (por exemplo, 1.0 é uma constante double, mas 1.0f é uma constante float).

Criado 15 de setembro de 2008
Ultima resposta 15 de set. de 2008
Respostas 5
Participantes 3