1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Problema geométrico em OpenGL

Discussão em 'Programação' iniciada por Sidner, 4 de Maio de 2012. (Respostas: 6; Visualizações: 1083)

  1. Sidner

    Sidner Power Member

    Ora bem, eu preciso de desenhar esta figura: [​IMG]


    Eu já percebi que ela tem a forma de uma pirâmide e que, à medida que vai subindo, o ponto vai-se aproximando do centro até formar um circulo no topo de raio 1, com 12 slices. Assim como o quadrado, tem 12 slices. Esta pirâmide tem um número indefinido de stacks, quantas mais stacks melhor definição terá. Para já, eu contentava-me em fazer isto com 1 stack, mas não estou a conseguir. Já tenho num vector os pontos todos da base, mas não estou a conseguir desenhar o polígono visto que não consigo perceber qual o ponto do círculo em cima a que associa cada um dos pontos do quadrado...

    Alguém me pode ajudar?
    Obrigado

    Edit: De preferência usando GL_TRIANGLE_STRIPS. O quadrado que tenho, para já, está com GL_POLYGON.

    Edit2: Mais info:
    Código:
    glBegin(GL_TRIANGLE_STRIP);
           glVertex3f(pontos_base[0][0],0,pontos_base[0][1]);
        glVertex3f(pontos_base[1][0],0,pontos_base[1][1]);
        glVertex3f(pontos_base[0][0],2.0,pontos_base[0][1]);
        glVertex3f(pontos_base[1][0],2.0,pontos_base[1][1]);
    glEnd();
    
    Isto devia desenhar um quadrado...mas não aparece nada... =\

    Edit 3: Já agora, fica aqui o vector dos pontos também...
    Código:
    float pontos_base_temp[12][2] = {{-0.5,0.5},{-0.5+1/3,0.5},{-0.5+2/3,0.5},{0.5,0.5},{0.5,0.5-1/3},{0.5,0.5-2/3},{0.5,-0.5},{0.5-1/3, -0.5},{0.5-2/3,-0.5},{-0.5,-0.5},{-0.5,-0.5+1/3},{-0.5,-0.5+2/3}};
    
     
    Última edição: 5 de Maio de 2012
  2. Sidner

    Sidner Power Member

    Já corrigi o bug da imagem de exemplo, agora podem ver como é suposto ficar. :P
     
  3. Sidner

    Sidner Power Member

    Ninguém? :( Bolas...
     
  4. Hi World!

    Hi World! Power Member

    Que ângulo, supostamente, a pirâmide deve fazer com a base em que assenta?

    Segundo o círculo, deves dividir cada secção nas tais stacks.. A medida que cada stack tem é usada como um lado de cada polígono.. A partir daí, tens que desenhar os restantes lados, com a divisão de altura da pirâmide pelo número de slices.. E não te esqueças da inclinação, que irá afectar duas das dimensões!

    Espero ter ajudado.. :)
     
  5. Sidner

    Sidner Power Member

    Sinceramente, esse ângulo é um parâmetro que não me tinha lembrado, ainda... É uma boa questão. Vou tratar disso quando pegar no problema amanhã de manhã. :) Obrigado pela ajuda! Teóricamente, cada novo vértice do círculo, ou seja, cada nova slice irá corresponder a uma "slice" do quadrado, cujos pontos eu já tenho. Se eu souber os pontos do circulo, consigo fazer triangle strips dando ponto quadrado, ponto quadrado, ponto circulo, ponto circulo e depois ir alternando até ao fim. O meu problema está mesmo em saber qual o primeiro ponto, porque a partir daí é acresentar cosseno em x e seno em z.
     
  6. Hi World!

    Hi World! Power Member

    Se fosse comigo, começaria pelo círculo.. Pois, por aí, é possível determinar todas as slices do sólido, depois percorrendo até à sua base.. :)

    Não sei como é o trabalho.. Se for uma peça única, pode ser assim.. Se for para ser algo dinâmico, precisa de um pouco mais, para determinar a base inferior..
     
  7. Sidner

    Sidner Power Member

    É uma peça estática, sim. E realmente, não tinha pensado começar pelo círculo... Vou experimentar. :P Já sei porque não pensei no ângulo, é que, teoricamente, o triangle_strips, dando eu o vértice do topo e os dois da base, ele desenha-me um triangulo inclinado automaticamente. Obrigado pela ajuda, pá. :) É sempre bom ter alguém de fora do problema olhar para isto, quando se tá encravado... Já só via coordenadas sem saber o que elas eram. :P
     

Partilhar esta Página