Ver Mensaje Individual
  #10 (permalink)  
Antiguo 28/10/2006, 13:35
MaxExtreme
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 18 años, 11 meses
Puntos: 17
Cita:
Iniciado por Instru Ver Mensaje
bueno, en mi opinion se me hace mas practico usar una ecuacion analitica en vez de una funcion, pero cada quien sus gustos.

Saludos
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