Beruflich Dokumente
Kultur Dokumente
Circulo BRESENHAM
G3
#include<graphics.h>
#include<iostream.h>
#include<stdio.h>
#include<conio.h>
#include<stdlib.h> //exit(), randomize(),random()
#include<dos.h>//delay
//variables globales
int tarjeta, modo, error;
}
void simetrico(int xc, int yc, int x, int y)
{
putpixel(xc+x,yc+y,5);
putpixel(xc-x,yc+y,5);
putpixel(xc+x,yc-y,5);
putpixel(xc-x,yc-y,5);
putpixel(xc+y,yc+x,5);
putpixel(xc-y,yc+x,5);
putpixel(xc+y,yc-x,5);
putpixel(xc-y,yc-x,5);
}
}
}
}
Ventajas
CIRCULO BRESENHAM
en su uso de este
algoritmo es muy
ptimo preciso e
eficiente para el trazado
de circunferencias.
Desventajas
CIRCULO BRESENHAM
Requiere aritmtica en el
punto flotante
#include<graphics.h>
#include<iostream.h>
#include<stdio.h>
#include<conio.h>
#include<stdlib.h> //exit(), randomize(),random()
#include<dos.h>//delay
//variables globales
int tarjeta, modo, error;
putpixel(xc-y,yc+x,5);
putpixel(xc+y,yc-x,5);
putpixel(xc-y,yc-x,5);
}
dy=abs(y2-y1);
if(dx>dy)
p=dx;
else
p=dy;
xi=dx/p;
yi=dy/p;
if(x1>x2)
xi*=(-1);
if(y1>y2)
yi*=(-1);
x=x1;
y=y1;
for(k=1;k<=p;k++)
{
x+=xi;
y+=yi;
putpixel(x,y,4);
}
}
Iniciar();
//setbkcolor(2);
setcolor(4);
outtextxy(350,80,"GRUPO 3: CIRCULO BRESENHAM -RUEDA ");
circulo_BRESENHAM(150,200,100);
linea(151,100,152,300);
linea(100,115,205,285);
linea(57,160,240,240);
linea(52,225,248,178);
linea(90,280,212,122);
getch();
Terminar();
return 0;
}
void Iniciar()
{
detectgraph(&tarjeta,&modo);
initgraph(&tarjeta,&modo,"C:\\TURBOC3\\BGI");
error=graphresult( );
if (error!=grOk)//hay error
{
printf("error al inicializar modo grafico
%s",grapherrormsg(error));
}
}
circulo_BRESENHAM(350,200,100);
circulo_BRESENHAM(150,200,100);
circulo_BRESENHAM(325,135,100);
circulo_BRESENHAM(175,135,100);
circulo_BRESENHAM(325,268,100);
circulo_BRESENHAM(175,268,100);
getch();
Terminar();
return 0;
}
Parbola
#include<graphics.h>
#include<iostream.h>
#include<stdio.h>
#include<conio.h>
#include<stdlib.h> //exit(), randomize(),random()
#include<dos.h>
#include<math.h>
int tarjeta, modo, error;
void Iniciar()
{
detectgraph(&tarjeta,&modo);
initgraph(&tarjeta,&modo,"C:\\TC\\BGI");
error=graphresult( );
if (error!=grOk)//hay error
{
printf("error al inicializar modo grafico
%s",grapherrormsg(error));
}
}
void Terminar()
{
closegraph();//vuelve al modo texto
}
y = 0;
d = 1 - p;
//region 1
while(x < p && y<= limte)
{
line(xc+x,yc+y,xc+x,yc+y);
line(xc-x,yc+y,xc-x,yc+y);
if(d >= 0){
y++;
d = d - p2;
}
x++;
d = d + 2*x +1;
}
if(d == 1)
d = 1 - p4;
else
d = 1 - p2;
//region 2
while(y<= limte){
line(xc+x,yc+y,xc+x,yc+y);
line(xc-x,yc+y,xc-x,yc+y);
if(d <= 0){
x++;
d = d + 4*x;
}
y++;
d = d - p4;
}
}
void parabola_superior( xc, yc,p, limte)
{
int x,y,d;
int p2, p4;
p2 = 2*p;
p4 = 2*p2;
x = 0;
y = 0;
d = 1 - p;
//region 1
while(x < p && y<= limte)
{
line(xc+x,yc+y,xc+x,yc+y);
line(xc-x,yc+y,xc-x,yc+y);
if(d >= 0){
y--;
d = d - p2;
}
x++;
d = d + 2*x +1;
}
if(d == 1)
d = 1 - p4;
else
d = 1 - p2;
//region 2
while(x< limte){
line(xc+x,yc+y,xc+x,yc+y);
line(xc-x,yc+y,xc-x,yc+y);
if(d <= 0){
x++;
d = d + 4*x;
}
y--;
d = d - p4;
}
}
void parabola_izquierdo( xc, yc,p, limte)
{
int x,y,d;
int p2, p4;
p2 = 2*p;
p4 = 2*p2;
x = 0;
y = 0;
d = 1 - p;
//region 1
while(y < p && x<= limte)
{
line(xc-x,yc+y,xc-x,yc+y);
line(xc-x,yc-y,xc-x,yc-y);
if(d >= 0){
x++;
d = d - p2;
}
y++;
d = d + 2*y +1;
}
if(d == 1) d = 1 - p4;
else d = 1 - p2;
//region 2
while(x<= limte){
line(xc-x,yc-y,xc-x,yc-y);
line(xc-x,yc+y,xc-x,yc+y);
if(d <= 0){
y++;
d = d + 4*y;
}
x++;
d = d - p4;
}
}
circulo_BRESENHAM (xc, yc, radio,n)
{
double x,y,e;
x=radio;
y=0;
e=0;
while(y<x)
{
putpixel(xc+x,yc+y,5);
putpixel(xc-x,yc+y,5);
putpixel(xc+x,yc-y,5);
putpixel(xc-x,yc-y,5);
putpixel(xc+y,yc+x,5);
putpixel(xc-y,yc+x,5);
putpixel(xc+y,yc-x,5);
putpixel(xc-y,yc-x,5);
e=e+2*y+1;
y++;
if((2*e)>(2*x-1))
{
x--;
e=e-2*x+1;
}
}
}
main() {
Iniciar();
Setcolor(6);
outtextxy(100,15,"G3 Parabola ");
circulo_BRESENHAM (300,240,70,5);
parabola_derecho(370,240,50,150);
parabola_inferior(300,310,50,150);
parabola_superior(300,170,50,125);
parabola_izquierdo(230,240,50,150);
getch();
Terminar();
return 0;
Algoritmo de breseham
#include<graphics.h>
#include<iostream.h>
#include<stdio.h>
#include<conio.h>
#include<stdlib.h> //exit(), randomize(),random()
#include<dos.h>//delay
//variables globales
int tarjeta, modo, error;
initgraph(&tarjeta,&modo,"C:\\TURBOC3\\BGI");
error=graphresult( );
if (error!=grOk)//hay error
{
printf("error al inicializar modo grafico
%s",grapherrormsg(error));
}
}
}
else
putpixel(x,y,1);
x++;
y+=m;
}
}