#include< stdio.h >
#include< graphics.h >
struct JwindowR
{
int JxR,JyR;
}JwinminR,JwinmaxR;
int JcolorR;
int JRectangleR()
{
char FILENRRE[20];
printf("\nInput the file name:");
scanf("%s",FILENRRE);
FILE *JfpR=fopen(FILENRRE,"r");
fscanf(JfpR,"%d%d%d%d",&JwinminR.JxR,&JwinminR.JyR,&JwinmaxR.JxR,&JwinmaxR.JyR);
fclose(JfpR);
JDrawLineR(JwinminR.JxR,JwinminR.JyR,JwinminR.JxR,JwinmaxR.JyR);
JDrawLineR(JwinminR.JxR,JwinmaxR.JyR,JwinmaxR.JxR,JwinmaxR.JyR);
JDrawLineR(JwinmaxR.JxR,JwinmaxR.JyR,JwinmaxR.JxR,JwinminR.JyR);
JDrawLineR(JwinmaxR.JxR,JwinminR.JyR,JwinminR.JxR,JwinminR.JyR);
}
int JDrawfaceR()
{
JDrawEllipseR(250,250,150,85,0);
JDrawEllipseR(250,380,70,110,1);
JDrawLineR(250,305,250,330);
JDrawLineR(235,305,265,305);
JDrawEllipseR(175,225,10,10,5);
JDrawEllipseR(325,225,10,10,5);
JDrawEllipseR(100,235,25,25,2);
JDrawLineR(85,235,115,235);
JDrawEllipseR(397,235,25,25,2);
JDrawLineR(383,235,413,235);
JDrawEllipseR(250,130,8,35,3);
JDrawEllipseR(250,65,8,30,4);
}
int JDrawEllipseR(int JxcR,int JycR,int JrxR,int JryR,int JchR)
{
int Jx0R=0,Jy0R=JryR,JkcountR;
float Jp1R=(JryR*JryR)-(JrxR*JrxR*JryR)+((1.0/4)*JrxR*JrxR),Jp2R=JryR*JryR*(Jx0R+1.0/2)*(Jx0R+1.0/2)+JrxR*JrxR*(Jy0R-1)*(Jy0R-1)-(JrxR*JrxR*JryR*JryR);
JpolygonR(Jx0R,Jy0R,JxcR,JycR,JchR);
while(2*JryR*JryR*Jx0R<2 data-blogger-escaped-br="" data-blogger-escaped-rxr="" data-blogger-escaped-y0r=""> { Jx0R++;
if(Jp1R<0 data-blogger-escaped-br=""> Jp1R+=2*JryR*JryR*(Jx0R+1);
else
{ Jy0R--;
Jp1R+=2*JryR*JryR*(Jx0R+1)-2*JrxR*JrxR*(Jy0R-1)+JryR*JryR;
}
//delay(50);
JpolygonR(Jx0R,Jy0R,JxcR,JycR,JchR);
}
while(Jy0R!=0)
{
Jy0R--;
if(Jp2R>0)
Jp2R+=-JrxR*JrxR*(2*Jy0R-1);
else
{
Jx0R++;
Jp2R+=2*JryR*JryR*Jx0R+2*JryR*JryR-2*JrxR*JrxR*(Jy0R-1)+JrxR*JrxR;
}
JpolygonR(Jx0R,Jy0R,JxcR,JycR,JchR);
}
}
int JpolygonR(int Jx0R,int Jy0R,int JxcR,int JycR,int JchR)
{
if(JchR!=1&&JchR!=4) if(inside(JxcR+Jx0R,JycR+Jy0R)) putpixel(JxcR+Jx0R,JycR+Jy0R,JcolorR);
if(JchR!=1&&JchR!=3) if(inside(JxcR-Jx0R,JycR+Jy0R)) putpixel(JxcR-Jx0R,JycR+Jy0R,JcolorR);
if(JchR!=2&&JchR!=4) if(inside(JxcR+Jx0R,JycR-Jy0R)) putpixel(JxcR+Jx0R,JycR-Jy0R,JcolorR);
if(JchR!=2&&JchR!=3) if(inside(JxcR-Jx0R,JycR-Jy0R)) putpixel(JxcR-Jx0R,JycR-Jy0R,JcolorR);
if(JchR==2)
{
JDrawLineR(JxcR+Jx0R,JycR+Jy0R,JxcR-Jx0R,JycR+Jy0R);
}
if(JchR==5)
{
JDrawLineR(JxcR+Jx0R,JycR+Jy0R,JxcR-Jx0R,JycR+Jy0R);
JDrawLineR(JxcR+Jx0R,JycR-Jy0R,JxcR-Jx0R,JycR-Jy0R);
}
//delay(50);
}
int inside(int JxR,int JyR)
{
int JicountR;
for(JicountR=0;JicountR<4 data-blogger-escaped-br="" data-blogger-escaped-icountr=""> {
switch(JicountR)
{
case 0: if(JxR case 1: if(JxR>JwinmaxR.JxR) return 0; break;
case 2: if(JyR>JwinmaxR.JyR) return 0; break;
case 3: if(JyR }
}
return 1;
}
int JDrawLineR(int Jx1R,int Jy1R,int Jx2R,int Jy2R)
{
int JdxR=Jx2R-Jx1R,JdyR=Jy2R-Jy1R,JxR=Jx1R,JyR=Jy1R,JiR=1,JpR,JxInc=1,JyInc=1,JcntR,JtR;
float JslopR;
if(JdyR<0 data-blogger-escaped-br="" data-blogger-escaped-dyr="" data-blogger-escaped-jyinc="-1;}"> if(JdxR<0 data-blogger-escaped-br="" data-blogger-escaped-dxr="" data-blogger-escaped-jxinc="-1;}"> JslopR=(JdyR*1.0)/JdxR;
if(JslopR>1)
{ JtR=JdxR;
JdxR=JdyR;
JdyR=JtR;
}
if(inside(JxR,JyR)) putpixel(JxR,JyR,JcolorR);
JpR=2*JdyR-JdxR;
JcntR=(JdxR while(JiR {
if(JslopR<1 data-blogger-escaped-br="" data-blogger-escaped-else="" data-blogger-escaped-jxr="" data-blogger-escaped-jyr="" data-blogger-escaped-xinc="" data-blogger-escaped-yinc=""> if(JpR<0 data-blogger-escaped-br=""> JpR+=2*JdyR;
else
{
if(JslopR<1 data-blogger-escaped-br="" data-blogger-escaped-else="" data-blogger-escaped-jxr="JxR+JxInc;" data-blogger-escaped-jyr="JyR+JyInc;"> JpR+=2*(JdyR-JdxR);
}
if(inside(JxR,JyR)) putpixel(JxR,JyR,JcolorR);
JiR++;
//delay(50);
}
}
int main()
{
int JgdR=DETECT,JgmR;
JwinminR.JxR=JwinminR.JyR=0;
initgraph(&JgdR,&JgmR,"");
JwinmaxR.JxR=getmaxx();JwinmaxR.JyR=getmaxy();
JcolorR=15;
printf("************************FIGURE BEFORE CLIPPING**********************************");
JDrawfaceR();
setcolor(5);
delay(1000);
setbkcolor(0);
JRectangleR();
JcolorR=3;
delay(1000);
printf("******************FIGURE AFTER CLIPPING******************************");
JDrawfaceR();
getch();
closegraph();
}
Free C programs with output, c programming language, object oriented programming, c programs codes, c program shortcuts, history of c programming language, c programming compilers
ad
Thursday, 5 July 2012
program for polygonal clipping
//program for polygonal clipping
Subscribe to:
Post Comments (Atom)
thank u sir
ReplyDelete