Hola,
me gustaria dibujar una circunferencia en opengl.
La ciircunferencia, le pongo yo las coordenadas.
Gracias.
| ||||
| Pues no se si opengl tenga funciones para el dibujadod e primitivas. En caso de que no, usa un poco de geometria analitica x^2+y^2=25 Al parecer es una circuferencia de radio 5. Para indicarle las coordenadas, creo que hay que sumarleselas, pero no recuerdo como. Saludos
__________________ Usa las putas faqs: http://www.forosdelweb.com/f96/faqs-del-lenguaje-c-variantes-264647/ |
| |||
| Cita: ¿Qué cabecera?Tendrás que poner el código para dibujar cada punto en la posición dada por la ecuación (x-x0)^2+(y-y0)^2=r^2, siendo (x0,y0) el centro de la circunferencia deseado y r el radio. ¿Cuál es el problema? Sólo tienes que deducir y(x) con algo como: double y(double x) { return ...; } Para luego pintar cada punto en (x, y(x)) Son matemáticas básicas... |
| |||
| Hola david1981 Instru ya te mencionó la manera de hacerlo. Por otro lado a mí en lo personal me resulta mas práctico utilizar funciones paramétricas (cuando aplica). En el caso de la circunferencia: f(α) = ( x + r * Cos(α), y + r * Sen(α)) donde α Є [0, 2π] y r>0 es una circunferencia de radio r y centro en (x, y). Si no te queda muy claro el uso de radianes lo puedes ver en grados como sigue: f(α) = ( x + r * Cos( (π / 180) * α) , y + r * Sen( (π / 180) * α)) donde α Є [0, 360] y r >0 si evaluas esta función para un numero α que va de 0 a 360 obtienes los puntos que representan a la circunferencia con centro (x,y) y radio r. Solo recuerda que π = 3.14159265... La función esta dada, ahora solo resta implementarla. Como ya mencionó MaxExtreme son matemáticas básicas y siempre es bueno saber de Geometria Analítica, sobre todo cuando se trate de librerias gráficas. Salu2ks |
| |||
| Cita: Instru, lo tuyo también es una función cuando despejas una de las variables:f(x) = y(x) = sqrt(r^2 - (x-x0)^2) + y0 Con función paramétrica se refiere a una función la cual sus valores vienen dados por separado, en ecuaciones distintas, determinados por un parámetro común, es decir: x = r * cos(α) + x0 y = r * sen(α) + y0 Dando valores a α obtienes el valor respectivo de cada variable (x,y) por separado. Eso es una función paramétrica. La manera de representarla en C sería algo así: double x(double a) { return r * cos(a) + x0; } double y(double a) { return r * sin(a) + y0; } La tuya, sería double y(double x) { return sqrt(r * r - (x - x0) * (x - x0)) + y0; } La única diferencia estaría en que con paramétricas daríamos valores de 0 a 2π: for(a = 0; a < 2*pi; a++) point(x(a), y(a)); Y con la tuya dando valores a x dentro del rango que quisises: for(x = x0 - r; x < x0 + r; x++) point(x, y(x)); ¿Ventajas de la paramétrica? Que no tienes que preocuparte del rango, con ir de 0 a 2π obtendrás todos los puntos con la precisión que desees. En cambio, con la x tendrías que tener cuidado con el rango, o dibujarlo para toda la pantalla. Date cuenta de que si coges una x que no se encuentre en el rango de la circunferencia (x0 - r, x0 + r), aparece una raíz de un número negativo. Es decir, sqrt() en C te devolvería un double que no existiría, y podrías estar dibujando cosas que no deben aparecer. Última edición por MaxExtreme; 28/10/2006 a las 13:45 |
| |||
| No sé qué diferencia hay en C, es decir, una función C se llama así precisamente porque se asemeja a una función matemática: tomas unos parámetros, devuelves un valor, hasta la forma de escribirlas es la misma: printf(x), y(x)... |
| |||
| Código PHP: circ->y Coordenada en Y circ->r Radio del circulo Variables Del tipo GLfloat o lo que necesites en este caso era una lista enlazada Notese las definiciones: Frac_Circ = numero de rectas que conforman el circulo > Frac_Circ = < Rendimiento y por supuesto ya debe estar inicializado el OpenGL y listo para dibujar |
Este tema le ha gustado a 1 personas (incluyéndote)