You are on page 1of 9

Experiment 2.

3
Student Name: Naman Chahal UID: 19BCS1522
Branch: BE-CSE Section/Group: CSE 3B
Semester: 5 Date of Performance: 12-10-21
Subject Name: Computer Graphics Lab Subject Code: CSP-305

1. Aim/Overview of the practical:

To draw a circle with a given center and radius using midpoint circle algorithm.
To draw a circle with a given center and radius using circle generator algorithm.
2. Code Screenshots
 Mid-point circle algorithm

#include<iostream.h>
#include<conio.h>
#include<graphics.h>
#include<math.h>
void circleplotpoint(int, int, int, int);
void circlemidpoint(int xc, int yc, int r)
{
int x=0, y=r;
int p=(1-r);
circleplotpoint(xc,yc,x,y);
while(x<y)
{
x++;
if(p<0)
p=p+2*x+1;
else
{
y--;
p=p+2*(x-y)+1;
}
circleplotpoint(xc,yc,x,y);
}
}
void circleplotpoint( int xc, int yc, int x, int y)
{
putpixel(xc+x , yc+y, 15);
putpixel(xc-x , yc+y, 14);
putpixel(xc+x , yc-y, 13);
putpixel(xc-x , yc-y, 12);
putpixel(xc+y , yc+x, 11);
putpixel(xc-y , yc+x, 10);
putpixel(xc+y , yc-x, 9);
putpixel(xc-y , yc-x, 8);
}

void main(){
int gd=DETECT, gm, a,b,c;
clrscr();
initgraph(&gd,&gm, "c:\\turboc3\\bgi");
cout<<"Enter origin coordinates: "<<endl;
cin>>a>>b;
cout<<"Enter radius: "<<endl;
cin>>c;
putpixel(a,b,15);
circlemidpoint(a,b,c);
getch();
}
 Circle generator algorithms - Polynomial method
#include<iostream.h>
#include<conio.h>
#include<graphics.h>
#include<math.h>
#include<dos.h>
void circleplotpoint(int, int, int, int);
void circlepoly( int xc, int yc, int r){
int x=0, y=r;
float xend = r/1.414;
while (x<=xend)
{
y= sqrt((r*r)-(x*x));
circleplotpoint(xc,yc,x,y);
x++;
// #delay(20);
}
}
void circleplotpoint(int xc, int yc, int x, int y){
putpixel(xc+x, yc+y, 15);
putpixel(xc-x, yc+y, 14);
putpixel(xc+x, yc-y, 13);
putpixel(xc-x, yc-y, 12);
putpixel(xc+x, yc+x, 11);
putpixel(xc-x, yc+x, 10);
putpixel(xc+x, yc-x, 9);
putpixel(xc-x, yc-x, 8);
}

void main(){
int gd=DETECT, gm, a,b,c;
clrscr();
initgraph(&gd,&gm, "c:\\turboc3\\bgi");
cout<<"Enter origin coordinates: "<<endl;
cin>>a>>b;
cout<<"Enter radius: "<<endl;
cin>>c;
putpixel(a,b,15);
circlepoly(a,b,c);
getch();
}
 Trigonometric method

#include<iostream.h>
#include<conio.h>
#include<graphics.h>
#include<math.h>
#include<dos.h>
#define round(a) ((int) (a+0.5))

void circleplotpoint(float, float, float, float);


void circlepoly( float xc, float yc, float r){
float T= 0, Tend = 45, Tinc= 1/r, angle,x,y,t=3.14/180;
while(T<Tend){
angle = t*T;
x=r*cos(angle);
y= r*sin(angle);
circleplotpoint(xc, yc, round(x), round(y));
T= T+Tinc;
}
}
void circleplotpoint(float xc, float yc, float x, float y){
putpixel(xc+x , yc+y , 15);
putpixel(xc-x , yc+y , 14);
putpixel(xc+x , yc-y , 13);
putpixel(xc-x , yc-y , 12);
putpixel(xc+y , yc+x , 11);
putpixel(xc-y , yc+x , 10);
putpixel(xc+y , yc-x , 9);
putpixel(xc-y , yc-x , 8);
}
void main(){
int gd=DETECT, gm, a,b,c;
clrscr();
initgraph(&gd,&gm, "c:\\turboc3\\bgi");
cout<<"Enter origin coordinates: "<<endl;
cin>>a>>b;
cout<<"Enter radius: "<<endl;
cin>>c;
putpixel(a,b,15);
circlepoly(a,b,c);
getch();
}
Evaluation Grid (To be created as per the SOP and Assessment guidelines by the faculty):

Sr. No. Parameters Marks Obtained Maximum Marks


1.
2.
3.

You might also like