• Miércoles 20 de Noviembre de 2024, 06:18

Autor Tema:  redibujar  (Leído 1757 veces)

janiun

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
redibujar
« en: Miércoles 9 de Marzo de 2011, 12:50 »
0
Hola Todos,

A ver si alguien me puede resolver el siguiente problema:

Por un lado tengo un cilindro (sin usar primitivas), y por otro lado tengo una simple recta.

El funcionamiento es el siguiente:

Mientras el cilindro se mantiene inamovible en el tiempo, la recta va rotando 360 grados, infinitamente.

Mi problema viene, porque el radio del cilindro tiene una parte fija + una pequeña parte aleatoria. Dando el efecto de que el cilindro tiene diferentes radios en diferentes alturas del cilindro.

el problema viene cuand,o al usar al final del main la función, glutMainLoop(). El programa no para de ejecutarse, y me va bien para ir actualizando la posición de la recta en el espacio (usando tambien la función glutIdleFunc,() ) pero me va mal, porque el cilindro no para redibujarse, y como el radio tiene una parte aleatoria, a cada pasada del main, el cilindro va cambiado de forma.

En resumen, lo que quiero conseguir es un cilindro fijo en el tiempo (con diferentes radios en función de la altura), y una recta que vaya rotando en el espacio.

Si alguien me dice como resolver el problema, o que función tendria que usar, se lo agradecería.

Muchas gracias!

Amilius

  • Miembro HIPER activo
  • ****
  • Mensajes: 665
    • Ver Perfil
Re: redibujar
« Respuesta #1 en: Miércoles 9 de Marzo de 2011, 19:28 »
0
Una solución es guardar en memoria la geometría del cilindro. Por ejemplo guardando la lista de números pseudo-aleatorios generados para el cilindro. Otra forma es inicializar el generador de número pseudo-aleatorios siempre con la misma semilla justo antes de pedirle números para definir la geometría del cilindro. La última opción te permitiría dibujar miles de cilindros de formas ligeramente distintas sin necesidad de guardar en memoria las pequeñas variaciones en su geometría.