Representacion y trazo de poligonos
La ecuación de un círculo centrado en el origen es:
x2 + y2 = R2
por lo cual, una primera aproximación para discretizarun círculo es resolver la ecuación
y = ±(R2 - x2)½; ∀ x∈Z, x entre 0 y R1
También se pueden usar las ecuaciones (R cos φ, R sen φ) con φ creciendo desde 0° a 90°, con esto se reduce elespaciado, pero tampoco es tan eficiente, ya que usa aritmética de punto flotante y llamadas a funciones.
Se puede aprovechar la simetría del círculo para sólo calcular uno de los 8 segmentos de 45º y luego con éste determinar los demás octantes. La siguiente figura y procedimiento resumen el proceso:
procedure puntos_circulo (x, y:real; valor:integer);
begin
escribir_pixel(x, y, valor);
escribir_pixel(y, x, valor);
escribir_pixel(y, -x, valor);
escribir_pixel(x, -y, valor);
escribir_pixel(-x, -y, valor);
escribir_pixel(-y, -x, valor);
escribir_pixel(-y, x, valor);
escribir_pixel(-x, y, valor);
end;
x2 + y2 = R2
por lo cual, una primera aproximación para discretizarun círculo es resolver la ecuación
y = ±(R2 - x2)½; ∀ x∈Z, x entre 0 y R1
También se pueden usar las ecuaciones (R cos φ, R sen φ) con φ creciendo desde 0° a 90°, con esto se reduce elespaciado, pero tampoco es tan eficiente, ya que usa aritmética de punto flotante y llamadas a funciones.
Se puede aprovechar la simetría del círculo para sólo calcular uno de los 8 segmentos de 45º y luego con éste determinar los demás octantes. La siguiente figura y procedimiento resumen el proceso:
procedure puntos_circulo (x, y:real; valor:integer);
begin
escribir_pixel(x, y, valor);
escribir_pixel(y, x, valor);
escribir_pixel(y, -x, valor);
escribir_pixel(x, -y, valor);
escribir_pixel(-x, -y, valor);
escribir_pixel(-y, -x, valor);
escribir_pixel(-y, x, valor);
escribir_pixel(-x, y, valor);
end;

Comentarios
Publicar un comentario