algoritmodepuntomedio
Publicado por luis eduardo (3 intervenciones) el 30/09/2001 23:56:10
hola necesito el algoritmo de punto medio para generacion de una elipse. gracias
luis eduardo.
luis eduardo.
Valora esta pregunta


0
#include <iostream>
#include <cmath>
#include <graphics.h> // Asegúrate de tener la biblioteca gráfica adecuada
void dibujarElipse(int xc, int yc, int a, int b) {
int x = 0, y = b;
int a2 = a * a;
int b2 = b * b;
int p;
// Región 1
p = round(b2 - (a2 * b) + (0.25 * a2));
while ((2 * b2 * x) < (2 * a2 * y)) {
putpixel(xc + x, yc - y, WHITE); // Dibuja el punto
putpixel(xc - x, yc - y, WHITE);
putpixel(xc + x, yc + y, WHITE);
putpixel(xc - x, yc + y, WHITE);
x++;
if (p < 0) {
p += (2 * b2 * x) + b2;
} else {
y--;
p += (2 * b2 * x) - (2 * a2 * y) + b2;
}
}
// Región 2
p = round(b2 * (x + 0.5) * (x + 0.5) + a2 * (y - 1) * (y - 1) - (a2 * b2));
while (y > 0) {
putpixel(xc + x, yc - y, WHITE);
putpixel(xc - x, yc - y, WHITE);
putpixel(xc + x, yc + y, WHITE);
putpixel(xc - x, yc + y, WHITE);
y--;
if (p > 0) {
p += a2 - (2 * a2 * y);
} else {
x++;
p += (2 * b2 * x) - (2 * a2 * y) + a2;
}
}
}
int main() {
int xc = 200; // Centro X
int yc = 200; // Centro Y
int a = 100; // Semieje mayor
int b = 50; // Semieje menor
// Inicializa la ventana gráfica
initwindow(400, 400, "Dibujo de elipse");
dibujarElipse(xc, yc, a, b);
getch(); // Espera a que se presione una tecla
closegraph(); // Cierra la ventana gráfica
return 0;
}