Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Polygo using bresenham line
- #include<stdio.h>
- #include<graphics.h>
- #include<math.h>
- #define ROUND(a)((int)(a+0.5))
- struct point
- {
- int x,y;
- }pol[10];
- int n;
- void DDA(int,int,int,int);
- void Bresenham(int,int,int,int);
- void readpoly()
- {
- int i;
- for(i=0;i<n;i++)
- {
- printf("\nEnter the %d coordinates ",i+1);
- scanf("%d%d",&pol[i].x,&pol[i].y);
- }
- }
- void drawpolygonDDA()
- {
- int i;
- for(i=0;i<n;i++)
- DDA(pol[i].x,pol[i].y,pol[(i+1)%n].x,pol[(i+1)%n].y);
- }
- void drawpolygonBres()
- {
- int i;
- for(i=0;i<n;i++)
- {
- delay(500);
- Bresenham(pol[i].x,pol[i].y,pol[(i+1)%n].x,pol[(i+1)%n].y);
- }
- }
- int main()
- {
- int xa,ya,xb,yb,choice,gd=DETECT,gm=VGAMAX;
- printf("\nEnter the no of sides ");
- scanf("%d",&n);
- readpoly();
- initgraph(&gd,&gm,NULL);
- printf("Press any key to draw traingle using Bresenham line
- drawing algortihm over the triangle drawn using
- DDA line drawing algorithm");
- drawpolygonDDA();
- getch();
- drawpolygonBres();
- while (!kbhit());
- closegraph();
- return 0;
- }
- void DDA(int xa,int ya,int xb,int yb)
- {
- int dx,dy,steps,k;
- dx=xb-xa;
- dy=yb-ya;
- float x=xa,y=ya,xinc,yinc;
- if(abs(dx)>abs(dy))
- steps=abs(dx);
- else
- steps=abs(dy);
- xinc=dx/(float)steps;
- yinc=dy/(float)steps;
- putpixel(ROUND(x),ROUND(y),5);
- for(k=0;k<steps;k++)
- {
- x+=xinc;
- y+=yinc;
- putpixel(ROUND(x),ROUND(y),5);
- }
- }
- void Bresenham(int xa,int ya,int xb,int yb)
- {
- int i,dx=xb-xa,dy=yb-ya,p,twod,twodd,s;
- float m=2;
- if(dx!=0)
- m=(float)dy/(float)dx;
- if(m>=-1&&m<=1)
- {
- if(xa>xb)
- {
- Bresenham(xb,yb,xa,ya);
- return;
- }
- p=2*dx-dy;
- if(dy<0)
- {
- s=-1;
- dy=-dy;
- }
- else
- s=1;
- putpixel(xa,ya,10);
- for(i=0;i<dy;i++)
- {
- while(p>0)
- {
- xa++;
- p-=2*dy;
- putpixel(xa,ya,10);
- }
- ya+=s;
- p+=2*dx;
- putpixel(xa,ya,10);
- }
- }
- else
- {
- if(ya>yb)
- {
- Bresenham(xb,yb,xa,ya);
- return;
- }
- p=2*dy-dx;
- if(dx<0)
- {
- s=-1;
- dx=-dx;
- }
- else
- s=1;
- putpixel(xa,ya,10);
- for(i=0;i<dx;i++)
- {
- while(p>0)
- {
- ya++;
- p-=2*dx;
- putpixel(xa,ya,10);
- }
- xa+=s;
- p+=2*dy;
- putpixel(xa,ya,10);
- }
- }
- }
- //Different shapes using flood fill
- # include <iostream.h>
- # include <graphics.h>
- # include <conio.h>
- # include <math.h>
- void show_screen( );
- void Flood_fill(constint,constint,constint,constint);
- void Circle(constint,constint,constint);
- void Triangle(constint,constint,constint,constint,constint,constint);
- void Rectangle(constint,constint,constint,constint);
- void Polygon(constint,constint []);
- void Line(constint,constint,constint,constint);
- int main( )
- {
- int driver=VGA;
- int mode=VGAHI;
- initgraph(&driver,&mode,"..\\Bgi");
- show_screen( );
- setcolor(15);
- Circle(175,175,40);
- Flood_fill(175,175,10,0);
- setcolor(15);
- settextstyle(0,0,1);
- outtextxy(150,225,"Circle");
- setcolor(15);
- Rectangle(375,145,475,205);
- Flood_fill(400,175,9,0);
- setcolor(15);
- settextstyle(0,0,1);
- outtextxy(390,215,"Rectangle");
- setcolor(15);
- Triangle(135,360,215,360,175,290);
- Flood_fill(175,325,8,0);
- setcolor(15);
- settextstyle(0,0,1);
- outtextxy(145,370,"Triangle");
- int polygon_points[14]={ 365,325, 400,290, 450,290, 485,325,
- 450,360, 400,360, 365,325 };
- setcolor(15);
- Polygon(7,polygon_points);
- Flood_fill(425,325,12,0);
- setcolor(15);
- settextstyle(0,0,1);
- outtextxy(395,370,"Polygon");
- getch( );
- return 0;
- }
- /*************************************************************************///--------------------------- Flood_fill( ) ---------------------------///*************************************************************************/void Flood_fill(constint x,constint y,
- constint fill_color,constint old_color)
- {
- if(getpixel(x,y)==old_color)
- {
- putpixel(x,y,fill_color);
- Flood_fill((x+1),y,fill_color,old_color);
- Flood_fill((x-1),y,fill_color,old_color);
- Flood_fill(x,(y+1),fill_color,old_color);
- Flood_fill(x,(y-1),fill_color,old_color);
- }
- }
- /*************************************************************************///------------------------------ Circle( ) ----------------------------///*************************************************************************/void Circle(constint h,constint k,constint r)
- {
- int color=getcolor( );
- int x=0;
- int y=r;
- int p=(1-r);
- do
- {
- putpixel((h+x),(k+y),color);
- putpixel((h+y),(k+x),color);
- putpixel((h+y),(k-x),color);
- putpixel((h+x),(k-y),color);
- putpixel((h-x),(k-y),color);
- putpixel((h-y),(k-x),color);
- putpixel((h-y),(k+x),color);
- putpixel((h-x),(k+y),color);
- x++;
- if(p<0)
- p+=((2*x)+1);
- else
- {
- y--;
- p+=((2*(x-y))+1);
- }
- }
- while(x<=y);
- }
- /*************************************************************************///---------------------------- Triangle( ) ----------------------------///*************************************************************************/void Triangle(constint x_1,constint y_1,constint x_2,constint y_2,
- constint x_3,constint y_3)
- {
- Line(x_1,y_1,x_2,y_2);
- Line(x_2,y_2,x_3,y_3);
- Line(x_3,y_3,x_1,y_1);
- }
- /*************************************************************************///--------------------------- Rectangle( ) ----------------------------///*************************************************************************/void Rectangle(constint x_1,constint y_1,constint x_2,constint y_2)
- {
- Line(x_1,y_1,x_2,y_1);
- Line(x_2,y_1,x_2,y_2);
- Line(x_2,y_2,x_1,y_2);
- Line(x_1,y_2,x_1,y_1);
- }
- /*************************************************************************///----------------------------- Polygon( ) ----------------------------///*************************************************************************/void Polygon(constint n,constint coordinates[])
- {
- if(n>=2)
- {
- Line(coordinates[0],coordinates[1],
- coordinates[2],coordinates[3]);
- for(int count=1;count<(n-1);count++)
- Line(coordinates[(count*2)],coordinates[((count*2)+1)],
- coordinates[((count+1)*2)],
- coordinates[(((count+1)*2)+1)]);
- }
- }
- /*************************************************************************///-------------------------------- Line( ) ----------------------------///*************************************************************************/void Line(constint x_1,constint y_1,constint x_2,constint y_2)
- {
- int color=getcolor( );
- int x1=x_1;
- int y1=y_1;
- int x2=x_2;
- int y2=y_2;
- if(x_1>x_2)
- {
- x1=x_2;
- y1=y_2;
- x2=x_1;
- y2=y_1;
- }
- int dx=abs(x2-x1);
- int dy=abs(y2-y1);
- int inc_dec=((y2>=y1)?1:-1);
- if(dx>dy)
- {
- int two_dy=(2*dy);
- int two_dy_dx=(2*(dy-dx));
- int p=((2*dy)-dx);
- int x=x1;
- int y=y1;
- putpixel(x,y,color);
- while(x<x2)
- {
- x++;
- if(p<0)
- p+=two_dy;
- else
- {
- y+=inc_dec;
- p+=two_dy_dx;
- }
- putpixel(x,y,color);
- }
- }
- else
- {
- int two_dx=(2*dx);
- int two_dx_dy=(2*(dx-dy));
- int p=((2*dx)-dy);
- int x=x1;
- int y=y1;
- putpixel(x,y,color);
- while(y!=y2)
- {
- y+=inc_dec;
- if(p<0)
- p+=two_dx;
- else
- {
- x++;
- p+=two_dx_dy;
- }
- putpixel(x,y,color);
- }
- }
- }
- /*************************************************************************///-------------------------- show_screen( ) ---------------------------///*************************************************************************/void show_screen( )
- {
- setfillstyle(1,1);
- bar(230,26,405,38);
- settextstyle(0,0,1);
- setcolor(15);
- outtextxy(5,5,"******************************************************************************");
- outtextxy(5,17,"*-**************************************************************************-*");
- outtextxy(5,29,"*-------------------------- --------------------------*");
- outtextxy(5,41,"*-**************************************************************************-*");
- outtextxy(5,53,"*-**************************************************************************-*");
- setcolor(11);
- outtextxy(237,29,"Flood Fill Algorithm");
- setcolor(15);
- for(int count=0;count<=30;count++)
- outtextxy(5,(65+(count*12)),"*-* *-*");
- outtextxy(5,438,"*-**************************************************************************-*");
- outtextxy(5,450,"*------------------------- -------------------------*");
- outtextxy(5,462,"******************************************************************************");
- setcolor(12);
- outtextxy(229,450,"Press any Key to exit.");
- }
Add Comment
Please, Sign In to add comment