Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<conio.h>
- #include<stdio.h>
- #include<graphics.h>
- #include<math.h>
- #define SIN 0.86602540
- void flood_fill(int x,int y,int ocolor,int n_color)
- {
- if((getpixel(x,y)!=ocolor)&&(getpixel(x,y)!=n_color))
- {
- putpixel(x,y,n_color);
- flood_fill(x+1,y,ocolor,n_color);
- flood_fill(x-1,y,ocolor,n_color);
- flood_fill(x,y+1,ocolor,n_color);
- flood_fill(x,y-1,ocolor,n_color);
- flood_fill(x+1,y-1,ocolor,n_color);
- flood_fill(x-1,y-1,ocolor,n_color);
- flood_fill(x+1,y-1,ocolor,n_color);
- flood_fill(x-1,y+1,ocolor,n_color);
- }
- }
- void koch(int x1,int y1,int x2,int y2,int m)
- {
- int xx,yy,x[5],y[5],lx,ly,offx=50,offy=300;
- lx=(x2-x1)/3;
- ly=(y2-y1)/3;
- //printf("hello'");
- x[0]=x1;
- y[0]=y1;
- x[4]=x2;
- y[4]=y2;
- x[1]=x[0]+lx;
- y[1]=y[0]+ly;
- x[3]=x[0]+2*lx;
- y[3]=y[0]+2*ly;
- xx=x[3]-x[1];
- yy=y[3]-y[1];
- x[2]=xx*0.5+yy*(SIN);
- y[2]=-(xx)*SIN+yy*0.5;
- x[2]=x[2]+x[1];
- y[2]=y[2]+y[1];
- if(m>0)
- {
- koch(x[0],y[0],x[1],y[1],m-1);
- koch(x[1],y[1],x[2],y[2],m-1);
- koch(x[2],y[2],x[3],y[3],m-1);
- koch(x[3],y[3],x[4],y[4],m-1);
- }
- else
- {
- line(offx+x[0],offy+y[0],offx+x[1],offy+y[1]);
- line(offx+x[1],offy+y[1],offx+x[2],offy+y[2]);
- line(offx+x[2],offy+y[2],offx+x[3],offy+y[3]);
- line(offx+x[3],offy+y[3],offx+x[4],offy+y[4]);
- }
- }
- void beizer(int x[4],int y[4])
- {
- double u;
- int i,j;
- for(u=0.0;u<1.0;u+=0.00005)
- {
- double tx=pow(1-u,3)*x[0]+3*u*pow(1-u,2)*x[1]+3*u*u*(1-u)*x[2]+x[3]*u*u*u;
- double ty=pow(1-u,3)*y[0]+3*u*pow(1-u,2)*y[1]+3*u*u*(1-u)*y[2]+y[3]*u*u*u;;
- putpixel(tx,ty,12);
- }
- for(i=0;i<4;i++)
- putpixel(x[i],y[i],10);
- return;
- }
- void decorate()
- {
- //bottom line
- line(71,435,519,435);
- //left tower
- line(71,188,100,65);//left slant
- line(100,65,126,188);//right slant
- line(71,188,71,435);//left line
- line(126,188,126,435);//right line
- // setcolor(WHITE);
- // floodfill(72,200,WHITE);
- //right tower
- line(467,188,467,435);//left line
- line(519,188,519,435);//right line
- line(490,65,467,188);//left slant
- line(490,65,519,188);//right slant
- //left turret
- line(166,268,166,435);//left line
- line(206,268,206,435);//right line
- // line(166,268,206,268);//top line
- ellipse(186,268,0,360,20,5);//top ellipse
- circle(186,298,15);//circle
- //right turret
- line(387,268,387,435);//left line
- line(427,268,427,435);//right line
- // line(387,268,427,268);//top line
- ellipse(407,268,0,360,20,5);//top ellipse
- circle(407,298,15);//circle
- //door
- // setstyle(SOLID_FILL,WHITE);
- rectangle(256,298,326,435);
- //left small tower
- line(156,145,156,208);//left line
- line(186,145,186,208);//right line
- line(156,145,171,100);//left slant
- line(186,145,171,100);//right slant
- //right small tower
- line(437,145,437,208);//left line
- line(407,145,407,208);//right line
- line(437,145,422,100);//left slant
- line(407,145,422,100);//right slant
- //horizontal strip
- rectangle(126,208,467,248);
- //center tower
- rectangle(250,60,320,248);//body
- line(250,60,285,25);//left slant
- line(320,60,285,25);//right slant
- rectangle(250,100,320,120);//rectangular slit
- line(250,100,320,120);//left to right slant
- line(320,100,250,120);//right to left slant
- line(264,100,264,95);//stub 1
- line(278,100,278,95);//stub 2
- line(292,100,292,95);//stub 3
- line(306,100,306,95);//stub 4
- // line(260,55,265,55);
- //setcolor(BROWN);
- //fl//oodfill(265,55,WHITE);
- // setcolor(WHITE);
- //flood_fill(315,110,0,4);
- }
- void rot(int obj1[10][10],int x,int y,int a)
- {
- float tx,ty,i,j,k;
- signed t[10][10];
- signed r[10][10];
- signed p1x,p1y,p2x,p2y,p3x,p3y;
- tx=x;
- ty=y;
- t[0][0]=cos(a*3.142/180);
- t[0][1]=sin(a*3.142/180);
- t[0][2]=0;
- t[1][0]=-sin(a*3.142/180);
- t[1][1]=cos(a*3.142/180);
- t[1][2]=0;
- t[2][0]=-tx*cos(a*3.142/180)+ty*sin(a*3.142/180)+tx;
- t[2][1]=-tx*sin(a*3.142/180)-ty*cos(a*3.142/180)+ty;
- t[2][2]=1;
- for(i=0;i<3;i++)
- {
- for(j=0;j<3;j++)
- {
- r[i][j]=0;
- for(k=0;k<3;k++)
- {
- r[i][j]=r[i][j]+obj1[i][k]*t[k][j];
- }
- // printf("%f",t[i][j]);
- }
- // printf("\n");
- }
- p1x=r[0][0];
- p1y=r[0][1];
- p2x=r[1][0];
- p2y=r[1][1];
- p3x=r[2][0];
- p3y=r[2][1];
- setcolor(GREEN);
- line(p1x,p1y,p2x,p2y);
- line(p2x,p2y,p3x,p3y);
- line(p3x,p3y,p1x,p1y);
- }
- void main()
- {
- int gd=DETECT,gm,i,tx=1,ty=1,j,f,q;
- int x1=40,x2=300,y1=40,y2=0 ,n;
- int p1x,p2x,p1y,p2y,p3x,p3y,p4x,p4y;
- int x[4]={559,420,370,353};
- int y[4]={216,240,260,300};
- //tranformation matrix
- int t[10][10]={0};
- //object matrix
- int obj1[10][10],k;
- int r[10][10]={0};
- //int x[20],y[20]; //bezier arrays
- int z;//scaling loop
- //int sx=1;
- //int sy=1;
- int d,h,h1,v;
- initgraph(&gd,&gm,"c:\\tc\\bgi");
- setcolor(WHITE);
- outtextxy(200,50,"The Battle of Hogwarts");
- delay(1000);
- outtextxy(230,250,"Brought to you by");
- outtextxy(140,275,"Sahil Kathpal Manthan Thakker");
- delay(3000);
- cleardevice();
- // circle(52,320,26);
- decorate();
- outtextxy(170,50,"Hogwarts");
- outtextxy(2,260,"Harry");
- outtextxy(2,270,"Potter");
- ellipse(52,320,0,360,26,18);
- //body
- line(52,348,52,406);
- //left leg
- line(52,406,35,433);
- //right leg
- line(52,396,72,433);
- //right hand
- line(52,374,89,342);
- //left hand
- line(52,374,41,408);
- obj1[0][0]=52;obj1[0][1]=374;obj1[0][2]=1;
- obj1[1][0]=89;obj1[1][1]=342;obj1[1][2]=1;
- obj1[2][0]=40;obj1[2][1]=330;obj1[2][2]=1;
- rot(obj1,52,374,30);
- setcolor(WHITE);
- outtextxy(490,150,"Lord Voldemort");
- //voldertman
- //body
- line(608,310,608,210);
- //right leg
- line(608,310,634,343);
- // left leg
- line(606,308,589,347);
- //right hand
- line(608,250,629,299);
- //left hand
- line(608,250,580,240);
- //left arm
- line(580,240,559,216);
- circle(608,190,20);
- n=5;
- flood_fill(265,55,0,1);
- setcolor(BLACK);
- line(52,374,89,342);
- for(i=1;i<10;i++)
- {
- h=89;
- h1=342;
- q=i;
- v=i*4;
- setcolor(WHITE);
- line(52,374,h+q,h1+v);
- delay(100);
- setcolor(BLACK);
- line(52,374,h+q,h1+v);
- }
- for(i=1;i<10;i++)
- {
- h=99;
- h1=378;
- q=i*2;
- v=i*4;
- setcolor(WHITE);
- line(52,374,h-q,h1-v);
- delay(100);
- setcolor(BLACK);
- line(52,374,h-q,h1-v);
- }
- setcolor(WHITE);
- line(52,374,89,342);
- for(i=0;i<20;i++)
- {
- setcolor(RED);
- koch(x1,y1,x2,y2,n);
- y2++;
- }
- setcolor(GREEN);
- // beizer(x,y);
- /* for(i=0;i<4;i++)
- {
- printf("enter coordinates of point %d\n",i+1);
- scanf("%d%d",&x[i],&y[i]);
- }
- beizer(x,y);
- */
- // circle(375,300,20);
- beizer(x,y);
- x[0]=560;x[1]=421;x[2]=371;x[3]=354;
- y[0]=217;y[1]=241;y[2]=261;y[3]=301;
- //delay(1000);
- beizer(x,y);
- x[0]=561;x[1]=422;x[2]=372;x[3]=355;
- y[0]=218;y[1]=242;y[2]=262;y[3]=302;
- //delay(1000);
- beizer(x,y);
- //delay(1000);
- x[0]=562;x[1]=423;x[2]=373;x[3]=356;
- y[0]=219;y[1]=243;y[2]=263;y[3]=303;
- beizer(x,y);
- //delay(500);
- x[0]=563;x[1]=424;x[2]=374;x[3]=357;
- y[0]=220;y[1]=244;y[2]=264;y[3]=304;
- beizer(x,y);
- delay(200);
- //erasing voldermorts ray
- setcolor(BLACK);
- beizer(x,y);
- x[0]=560;x[1]=421;x[2]=371;x[3]=354;
- y[0]=217;y[1]=241;y[2]=261;y[3]=301;
- beizer(x,y);
- x[0]=561;x[1]=422;x[2]=372;x[3]=355;
- y[0]=218;y[1]=242;y[2]=262;y[3]=302;
- beizer(x,y);
- x[0]=562;x[1]=423;x[2]=373;x[3]=356;
- y[0]=219;y[1]=243;y[2]=263;y[3]=303;
- beizer(x,y);
- delay(500);
- x[0]=563;x[1]=424;x[2]=374;x[3]=357;
- y[0]=220;y[1]=244;y[2]=264;y[3]=304;
- beizer(x,y);
- setcolor(WHITE);
- //harry spell time 2
- for(i=0;i<20;i++)
- {
- setcolor(BLACK);
- koch(x1,y1,x2,y2,n);
- y2--;
- setcolor(WHITE);
- decorate();
- }
- n=5;
- setcolor(BLACK);
- line(52,374,89,342);
- for(i=1;i<10;i++)
- {
- h=89;
- h1=342;
- q=i*2;
- v=i*4;
- setcolor(WHITE);
- line(52,374,h+q,h1+v);
- delay(100);
- setcolor(BLACK);
- line(52,374,h+q,h1+v);
- }
- for(i=1;i<10;i++)
- {
- h=99;
- h1=378;
- q=i;
- v=i*4;
- setcolor(WHITE);
- line(52,374,h-q,h1-v);
- delay(100);
- setcolor(BLACK);
- line(52,374,h-q,h1-v);
- }
- setcolor(WHITE);
- line(52,374,89,342);
- for(i=0;i<20;i++)
- {
- setcolor(RED);
- koch(x1,y1,x2,y2,n);
- y2++;
- }
- //pebble
- line(353,300,356,304);
- delay(100);
- line(356,304,350,304);
- delay(100);
- line(356,304,350,304);
- delay(1050);
- setcolor(GREEN);
- line(608,310,608,210);
- //right leg
- line(608,310,634,343);
- // left leg
- line(606,308,589,347);
- //right hand
- line(608,250,629,299);
- //left hand
- line(608,250,580,240);
- //left arm
- line(580,240,559,216);
- circle(608,190,20);
- // delay(100);
- // line(353,320,400,320);
- // delay(100);
- // line(353,325,400,325);
- //translating stone
- p1x=353; p1y=300;
- p2x=356; p2y=304;
- p3x=350; p3y=304;
- obj1[0][0]=p1x;
- obj1[0][1]=p1y;
- obj1[0][2]=1;
- obj1[1][0]=p2x;
- obj1[1][1]=p2y;
- obj1[1][2]=1;
- obj1[2][0]=p3x;
- obj1[2][1]=p3x;
- obj1[2][2]=1;
- // for(z=0;z<3;z++)
- // {
- // for(i=0;i<3;i++) {
- // printf("%d",obj1[z][i]);
- // }
- // printf("\n");
- //}
- for(z=0;z<90;z++)
- {
- delay(50);
- decorate();
- setcolor(BLACK);
- line(p1x,p1y,p2x,p2y);
- line(p2x,p2y,p3x,p3y);
- line(p3x,p3y,p1x,p1y);
- setcolor(WHITE);
- t[0][0]=1;
- t[0][1]=0;
- t[0][2]=0;
- t[1][0]=0;
- t[1][1]=1;
- t[1][2]=0;
- t[2][0]=tx;
- t[2][1]=ty;
- t[2][2]=1;
- tx=tx+3;
- ty--;
- //multiplying two matrices
- for(i=0;i<3;i++)
- {
- for(j=0;j<3;j++)
- {
- r[i][j]=0;
- for(k=0;k<3;k++)
- {
- r[i][j]=r[i][j]+obj1[i][k]*t[k][j];
- }
- // printf("%d",t[i][j]);
- }
- // printf("\n");
- }
- p1x=r[0][0];
- p1y=r[0][1];
- p2x=r[1][0];
- p2y=r[1][1];
- p3x=r[2][0];
- p3y=r[2][1];
- setcolor(GREEN);
- line(p1x,p1y,p2x,p2y);
- line(p2x,p2y,p3x,p3y);
- line(p3x,p3y,p1x,p1y);
- }
- // for(d=0;d<3;d++)
- // {
- // for(f=0;f<3;f++)
- // {
- // printf( "%d",r[d][f]);
- // }
- // printf("\n");
- // }
- /*obj[0][0]=p1x;
- obj[0][1]=p1y;
- obj[0][2]=1;
- obj[1][0]=p2x;
- obj[1][1]=p2y;
- obj[1][2]=1;
- obj[2][0]=p3x;
- obj[2][1]=p3y;
- sx=2;
- for(z=0;z<1;z++)
- {
- t[0][0]=sx;
- t[0][1]=0;
- t[0][2]=0;
- t[1][0]=0;
- t[1][1]=sy;
- t[1][2]=0;
- t[2][0]=0;
- t[2][1]=0;
- t[2][2]=1;
- //multiplying two matrices
- for(i=0;i<3;i++)
- {
- for(j=0;j<3;j++)
- {
- r[i][j]=0;
- for(k=0;k<3;k++)
- {
- r[i][j]=r[i][j]+obj[i][k]*t[k][j];
- printf("r[%d][%d]=%d\n",i,j,r[i][j]);
- }
- }
- }
- p1x=r[0][0];
- p1y=r[0][1];
- p2x=r[1][0];
- p2y=r[1][1];
- p3x=r[2][0];
- p3y=r[2][1];
- line(p1x,p1y,p2x,p2y);
- line(p2x,p2y,p3x,p3y);
- line(p3x,p3y,p1x,p1y);
- }*/
- koch(580,240,400,216,5);
- for(i=0;i<20;i++)
- {
- setcolor(BLACK);
- koch(x1,y1,x2,y2,n);
- y2--;
- setcolor(WHITE);
- decorate();
- }
- setcolor(BLACK);
- line(p1x,p1y,p2x,p2y);
- line(p2x,p2y,p3x,p3y);
- line(p3x,p3y,p1x,p1y);
- for(i=1;i<10;i++)
- {
- setcolor(GREEN);
- q=i*5;
- line(p1x,p1y,p2x,p2y);
- line(p2x,p2y,p3x,p3y-q);
- line(p1x,p1y,p3x,p3y-q);
- delay(100);
- setcolor(BLACK);
- line(p1x,p1y,p2x,p2y);
- line(p2x,p2y,p3x,p3y-q);
- line(p1x,p1y,p3x,p3y-q);
- }
- circle(608,190,20);
- for(i=1;i<10;i++)
- { setcolor(GREEN);
- q=i*5;
- circle(608,190,20+q);
- delay(100);
- setcolor(BLACK);
- circle(608,190,20+q);
- }
- delay(2000);
- cleardevice();
- setcolor(WHITE);
- outtextxy(160,200,"Voldy's gone mouldy, so now lets have fun!!");
- getch();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement