Skip to main content

Mid Point Circle Algorithm Implementation in C


#include<graphics.h>
#include<stdio.h>
#include<conio.h>
#include<dos.h>

void main()
{
 int i,x,y,r,p,midx,midy;
 int gd=DETECT,gm,xcenter,ycenter;
 printf("Enter the radius  :");
 scanf("%d",&r);
 initgraph(&gd,&gm,"..\\bgi");
 midx=getmaxx()/2;
 midy=getmaxy()/2;

 xcenter=midx;
 ycenter=midy;
 x=0;
 y=r;
 p=1-r;
 midpoint(xcenter,ycenter,x,y,p); // to draw circle

 //to draw asterik (2 horizontal n vertical lines)
 //inside the circle.
 for(i=0;i<=r;i++)
 { putpixel(xcenter+i,ycenter,10);
   putpixel(xcenter-i,ycenter,10);
   putpixel(xcenter,ycenter+i,10);
   putpixel(xcenter,ycenter-i,10);
 }

 getch();
 closegraph();
}

 midpoint(int xcenter,int ycenter,int x,int y,int p)
 {
 while(x < y)
 {
 plotcircle(xcenter,ycenter,x,y);
 if(p<0)
 p=p+2*x+1;
 else
 {
 p=p+2*(x-y)+1;
 y=y-1;
 }
 x=x+1;
 }
 if(x==y)
 plotcircle(xcenter,ycenter,x,y);
 return;
 }

 plotcircle(int xcenter,int ycenter,int x,int y)
 {
 putpixel(xcenter+x,ycenter+y,10);
 putpixel(xcenter-x,ycenter+y,10);
 putpixel(xcenter+x,ycenter-y,10);
 putpixel(xcenter-x,ycenter-y,10);
 putpixel(xcenter+y,ycenter+x,10);
 putpixel(xcenter-y,ycenter+x,10);
 putpixel(xcenter+y,ycenter-x,10);
 putpixel(xcenter-y,ycenter-x,10);

 // asterik lines (2 cross lines)
 putpixel(xcenter+x,ycenter-x,10);
 putpixel(xcenter-x,ycenter+x,10);
 putpixel(xcenter-x,ycenter-x,10);
 putpixel(xcenter+x,ycenter+x,10);

 return;
 }


Comments

Popular posts from this blog

Use Case Diagram for Online Book Store

Online Movie Ticket Booking Sequence Diagram

Linear search & Binary search using Template

Write a program to search an element from a list. Give user the option to perform Linear or Binary search. Use Template functions. #include<iostream> using namespace std; template <class T> void Lsearch(T *a, T item, int n) { int z=0; for(int i=0;i<n;i++) { if(a[i]== item) { z=1; cout<<"\n Item found at position = "<<i+1<<"\n\n"; } else if(z!=1) { z=0; } } if(z==0) cout<<"\n Item not found in the list\n\n"; } template <class T> void Bsearch(T *a, T item, int n) { int beg=0,end=n-1; int mid=beg+end/2; while((a[mid]!=item) && (n>0)) { if(item>a[mid]) beg=mid; else end=mid; mid=(beg+end)/2; n--; } if(a[mid]==item) cout<<"\n Item found at position = "<<mid+1<<"\n\n"; else cout<<"\n Item not found in the list\n\n"; } void main() { int iarr[10] = {2,42,56,86,87,99,323,546,767,886};