Search This Blog

Practical 5 Computer Graphics

#include<iostream>
#include<stdlib.h>
#include<graphics.h>
using namespace std;

float dda(float x1, float y1, float x2, float y2)
{
     float dx,dy,x,y,length,h,my,mx,ix,iy;
     float signdx, signdy;
     int i;
     
     dx = x2-x1;
     dy = y2-y1;
     
     if(dx>0)
       signdx = 1;
     else if(dx == 0)  
       signdx = 0;
     else
       signdx = -1;  
     
     if(dy>0)
       signdy = 1;
     else if(dy == 0)  
       signdy = 0;
     else
       signdy = -1; 
       
       if(dx<dy)
           length=dy;
       else 
           length=dx;
           
        ix = dx/length;
        iy = dy/length;        
        
        x = x1+(0.5*signdx);
        y = y1+(0.5*signdy);
        
        putpixel(x,y,RED);
        for(i=0;i<=length;i++)
        {
            x = x+ix;
            y = y+iy;
            putpixel(x,y,RED);   
            delay(35);
        }
}

int Circle(int xc, int yc, int x, int y)
{
     putpixel(xc+x,yc+y,RED);
     putpixel(xc-x,yc+y,RED);
     putpixel(xc+x,yc-y,RED);
     putpixel(xc-x,yc-y,RED);
     putpixel(xc+y,yc-x,RED);
     putpixel(xc-y,yc+x,RED);
     putpixel(xc+y,yc+x,RED);
     putpixel(xc-y,yc-x,RED);
}

int circle_bres(int xc, int yc, int r)
{
    int x = 0;
    int y = r;
    
    int d = 3-2*r;
    
    Circle(xc,yc,x,y);
    
    do
    {
       if(d<0)
          d+= 4*x + 6;
       else 
       {
           d += 4*(x-y)+10;
           y--;
       }   
       x++;
       
       Circle(xc,yc,x,y);
    }while(x<=y);
}

int main()
{
  int gd=DETECT,gm; 
 int x,y,r;
      
   
   cout<<"\n Enter the centre point of circle: ";
   cin>>x>>y;
   cout<<"\n Enter the radius of the circle: ";
   cin>>r;   
   
   initgraph(&gd,&gm,NULL);     
   
   circle_bres(x,y,r*2); 
   circle_bres(x,y,r);
   
   dda(x,y-r*2,x-1.73*r,y+r); 
   dda(x-1.73*r,y+r,x+1.73*r,y+r);
   dda(x,y-r*2,x+1.73*r,y+r);
 
   
   delay(1000);
   closegraph();

  return 0; 

} 

No comments:

Post a Comment