• Lunes 18 de Noviembre de 2024, 01:23

Autor Tema:  Poligonos Y Superficies  (Leído 1747 veces)

NioZero

  • Miembro activo
  • **
  • Mensajes: 29
    • Ver Perfil
    • http://www.ghidalgo.tk/
Poligonos Y Superficies
« en: Sábado 4 de Septiembre de 2004, 02:41 »
0
Hola. Saben que el otro día intenté hacer que me generara una superficie sola con ciclos iterativos de cuadrados.
 :comp:
Código: Text
  1. #define R 0.01
  2. int f(float x, float y){
  3.     return x * x + y * y;
  4. }
  5.  
  6. for (x=-1.0;x<=1.0;x+=R){
  7. for (z=-1.0;z<=1.0;z+=R){
  8. glColor3f(x,z,x);
  9. glBegin(GL_QUADS);
  10.    glVertex3f(x-R,0.0,z-R);
  11.    glVertex3f(x+R,0.0,z-R);
  12.    glVertex3f(x-R,0.0,z+R);
  13.    glVertex3f(x+R,0.0,z+R);
  14. glEnd();
  15. }
  16. }
  17.  
:blink:  :unsure:
Pero el problema es que lo probé y me dibuja pentágonos. Nose que es lo que pasa. Si alguien me puede ayudar porfa. Mas o menos ese es el código. Lo escribí rapido así que puede tener algun error de sintaxis.

Cha.

[size=109]ghidalgo.tk[/size]

Ruben3d

  • Moderador
  • ******
  • Mensajes: 710
  • Nacionalidad: es
    • Ver Perfil
    • Web personal
Re: Poligonos Y Superficies
« Respuesta #1 en: Martes 7 de Septiembre de 2004, 20:05 »
0
Hola.

Prueba a ver este código:
Código: Text
  1. for (x=-1.0; x<=1.0; x+=R)
  2. {
  3.   for (z=-1.0; z<=1.0; z+=R)
  4.   {
  5.     glColor3f(x,z,x);
  6.     glBegin(GL_QUADS);
  7.       glVertex3f(x-R,0.0,z+R);
  8.       glVertex3f(x+R,0.0,z+R);
  9.       glVertex3f(x+R,0.0,z-R);
  10.       glVertex3f(x-R,0.0,z-R);
  11.     glEnd();
  12.   }
  13. }
  14.  

La diferencia es que define el Quad en el sentido opuesto a las manecillas del reloj empezando por la esquina de abajo a la izquierda (según se ve desde el eje +Y con el +Z hacia abajo). Tú lo hacías en el sentido contrario. El BackFace Removal debería haber eliminado tus Quads (a no ser que lo tengas apagado o no estés sobre el plano XZ).

De todas formas, el resto parece estar bien y no debería hacer pentágonos! A ver si te has dejado la MODELVIEW_MATRIX mal configurada (tiene pinta de haberte dejado una rotación aplicada), carga la identidad antes de ejecutar este código.

Por último, hacerte notar que la dimensión de cada Quad es de 2*R, y que los pintas a distancia R de los centros, con lo cual se superponen. O bien los pintas a distancia 2*R, o bien usas R/2 en los glVertex (te recomiendo la primera opción).

Ya me dirás si consigues solucionar el problema.

Un saludo.

Ruben3d

kimi

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Poligonos Y Superficies
« Respuesta #2 en: Martes 9 de Noviembre de 2004, 16:57 »
0
La verdad es que yo soy nuevo en esto de opengl y tampoco se si te servirá de mucho mi ayuda, pero creo que el problema que tienes puede estar en la forma de definir los vértices. Defines :
Abajo izquierda.
Arriba izquierda.
Abajo derecha.
Arriba derecha.
De esta forma, no estoy seguro, pero creo que deberían salirte algo así como dos triángulos que se tocan en el vértice.

  Prueba:
Abajo izquierda.
Abajo derecha.
Arriba derecha.
Arriba izquierda.

  Un saludo.