Computer Graphics Ellipse Lab - 3 Assignment
Computer Graphics Ellipse Lab - 3 Assignment
Name:Abdela Aman
RollNo:-16071059
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <math.h>
int main()
float x,y,dtheta,theta,p;
int choice;
errorcode = graphresult();
getch();
exit(1);
scanf("%d",&choice);
float h,k,a,b;
1|Page
Computer graphics Ellipse lab -3 assignment
scanf("%f",&h);
scanf("%f",&k);
scanf("%f",&a);
scanf("%f",&b);
// draw a line
switch(choice)
case 1:
x=0;
y=0;
while(b*b*x<=a*a*y)
x=x+1;
y=b*sqrt(1-(x/a)*(x/a));
y=rand(y);
putpixel(h+x,k-y,BLUE);
putpixel(h-x,k+y,BLUE);
putpixel(h+x,k+y,BLUE);
putpixel(h-x,k-y,BLUE);
while(y>=0)
y=y-1;
x=a*sqrt(1-(y/b)*(y/b));
2|Page
Computer graphics Ellipse lab -3 assignment
putpixel(h+x,k-y,BLUE);
putpixel(h-x,k+y,BLUE);
putpixel(h+x,k+y,BLUE);
putpixel(h-x,k-y,BLUE);
//put_ellipse_pixel(h,k,x,y,RED);
break;
case 2:
if(a>b)
dtheta=1/a;
else
dtheta=1/b;
theta=0;
while(theta!=1.57)
x=a*cos(theta);
y=b*sin(theta);
putpixel(h+x,k-y,RED);
putpixel(h-x,k+y,RED);
putpixel(h+x,k+y,RED);
putpixel(h-x,k-y,RED);
theta=theta+dtheta;
break;
case 3:
x=0; y=b;
p=(b*b)-(a*a*b)+((a*a)/4);
3|Page
Computer graphics Ellipse lab -3 assignment
while((2*x*b*b)<(2*y*a*a))
putpixel(h+x,k-y,WHITE);
putpixel(h-x,k+y,WHITE);
putpixel(h+x,k+y,WHITE);
putpixel(h-x,k-y,WHITE);
if(p<0)
x=x+1;
p=p+(2*b*b*x)+(3*b*b);
else
p=p+(2*b*b*x+b*b)-(2*a*a*y)+(3*b*b+2*a*a);
y=y-1;
p=b*b*((x+0.5)*(x*0.5))+a*a*((y-1)*(y-1))-a*a*b*b;
while(y>=0)
putpixel(h+x,k-y,WHITE);
putpixel(h-x,k+y,WHITE);
putpixel(h+x,k+y,WHITE);
putpixel(h-x,k-y,WHITE);
if(p<0)
y=y-1;
p=p-(2*a*a*y)+(3*a*a);
4|Page
Computer graphics Ellipse lab -3 assignment
else
y=y-1;
x=x+1;
p=p+(2*b*b*x)-(2*a*a*y)+(3*a*a)+2*b*b;
break;
default:
printf("invlaid input\n");
getch();
closegraph();
return 0;
5|Page