Hola,
me gustaria dibujar una circunferencia en opengl.
La ciircunferencia, le pongo yo las coordenadas.
Gracias.
| |||
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 |
| ||||
si si max, al despejar la ecuacion se representa en forma de funcion. Pero sigue siendo diferente la forma de representarla en C. Una funcion es una funcion y una encuacion.....pues una ecuacion. Dos ciclos fors te dibujan la circunferencia en donde quieras, con las funciones, pues ya tienes la manera de implementarlas. No se, para mi son cosas representadas en diferentes maneras. Saludos |
| |||
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 |