Thursday, March 10, 2016

Mid point Cliping Algorithm

//Created By "Arunendra Kumar"//

#include<stdio.h>
#include<conio.h>
#include<graphics.h>
void mpsd(int,int,int,int);
int x_min,y_min,x_max,y_max;
int x1,y1,x2,y2,gd=DETECT,gm;
void main()
{
clrscr();
printf("\nEnter the value of Window co-ordinates:");
printf("(x_min,y_min)  : " );
scanf("%d%d",&x_min,&y_min);
printf("(x_max,y_max)  : " );
scanf("%d%d",&x_max,&y_max);
printf("\nEnter the co-ordinates of view point :");
printf("(x1,y1)   :"  );
scanf("%d%d",&x1,&y1);
printf("(x2,y2)   :"  );
scanf("%d%d",&x2,&y2);
clrscr();
initgraph(&gd,&gm,"c:\\tc\\bgi");
setcolor(RED);
rectangle(x_min,y_min,x_max,y_max);
mpsd(x1,y1,x2,y2);
getch();
}
void mpsd(int xa,int ya,int xb,int yb)
{
if( ((xa>=x_min)&&(xa<=x_max))&&((ya>=y_min)&&(ya<=y_max))&&((xb>=x_min)&&(xb<=x_max))&&((yb>=y_min)&&(yb<=y_max)) )
      {
setcolor(YELLOW);
line(xa,ya,xb,yb);
      }
else if( ((xa<=x_min)&&(xb<=x_min))||((ya<=y_min)&&(yb<=y_min))||((xa>=x_max)&&(xb>=x_max))||((ya>=y_max)&&(yb>=y_max)))
 {
setcolor(GREEN);
line(xa,ya,xb,yb);
 }
else
{
 mpsd( xa,ya,((xa+xb)/2) ,((ya+yb)/2) );
 mpsd( ((xa+xb)/2) ,((ya+yb)/2),xb,yb );
}
 //getch();
}


//For download .CPP file click on MPSD.CPP

No comments:

Post a Comment