Advertisement
manthanthakker40

CG_project on harrypotter by manthan and sahil

Nov 3rd, 2014
245
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 11.68 KB | None | 0 0
  1.  
  2. #include<conio.h>
  3. #include<stdio.h>
  4. #include<graphics.h>
  5. #include<math.h>
  6. #define SIN 0.86602540
  7. void flood_fill(int x,int y,int ocolor,int n_color)
  8.     {
  9.         if((getpixel(x,y)!=ocolor)&&(getpixel(x,y)!=n_color))
  10.         {
  11.             putpixel(x,y,n_color);
  12.             flood_fill(x+1,y,ocolor,n_color);
  13.  
  14.  
  15.             flood_fill(x-1,y,ocolor,n_color);
  16.             flood_fill(x,y+1,ocolor,n_color);
  17.             flood_fill(x,y-1,ocolor,n_color);
  18.             flood_fill(x+1,y-1,ocolor,n_color);
  19.             flood_fill(x-1,y-1,ocolor,n_color);
  20.             flood_fill(x+1,y-1,ocolor,n_color);
  21.             flood_fill(x-1,y+1,ocolor,n_color);
  22.         }
  23.     }
  24.  
  25. void koch(int x1,int y1,int x2,int y2,int m)
  26. {
  27.  
  28. int xx,yy,x[5],y[5],lx,ly,offx=50,offy=300;
  29.  
  30. lx=(x2-x1)/3;
  31. ly=(y2-y1)/3;
  32. //printf("hello'");
  33. x[0]=x1;
  34. y[0]=y1;
  35. x[4]=x2;
  36. y[4]=y2;
  37. x[1]=x[0]+lx;
  38. y[1]=y[0]+ly;
  39. x[3]=x[0]+2*lx;
  40. y[3]=y[0]+2*ly;
  41. xx=x[3]-x[1];
  42. yy=y[3]-y[1];
  43. x[2]=xx*0.5+yy*(SIN);
  44. y[2]=-(xx)*SIN+yy*0.5;
  45. x[2]=x[2]+x[1];
  46. y[2]=y[2]+y[1];
  47. if(m>0)
  48. {
  49.     koch(x[0],y[0],x[1],y[1],m-1);
  50.     koch(x[1],y[1],x[2],y[2],m-1);
  51.     koch(x[2],y[2],x[3],y[3],m-1);
  52.     koch(x[3],y[3],x[4],y[4],m-1);
  53.     }
  54.     else
  55.     {
  56.     line(offx+x[0],offy+y[0],offx+x[1],offy+y[1]);
  57.     line(offx+x[1],offy+y[1],offx+x[2],offy+y[2]);
  58.     line(offx+x[2],offy+y[2],offx+x[3],offy+y[3]);
  59.     line(offx+x[3],offy+y[3],offx+x[4],offy+y[4]);
  60.     }
  61.  
  62. }
  63. void beizer(int x[4],int y[4])
  64.     {
  65.     double u;
  66.     int i,j;
  67.     for(u=0.0;u<1.0;u+=0.00005)
  68.     {
  69.     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;
  70.     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;;
  71.     putpixel(tx,ty,12);
  72.     }
  73.     for(i=0;i<4;i++)
  74.     putpixel(x[i],y[i],10);
  75.     return;
  76.     }
  77.     void decorate()
  78.     {
  79.  
  80.     //bottom line
  81.     line(71,435,519,435);
  82.     //left tower
  83.     line(71,188,100,65);//left slant
  84.     line(100,65,126,188);//right slant
  85.     line(71,188,71,435);//left line
  86.     line(126,188,126,435);//right line
  87.      // setcolor(WHITE);
  88.        //   floodfill(72,200,WHITE);
  89.     //right tower
  90.     line(467,188,467,435);//left line
  91.  
  92.     line(519,188,519,435);//right line
  93.     line(490,65,467,188);//left slant
  94.     line(490,65,519,188);//right slant
  95.     //left turret
  96.     line(166,268,166,435);//left line
  97.     line(206,268,206,435);//right line
  98.        //   line(166,268,206,268);//top line
  99.     ellipse(186,268,0,360,20,5);//top ellipse
  100.     circle(186,298,15);//circle
  101.     //right turret
  102.     line(387,268,387,435);//left line
  103.     line(427,268,427,435);//right line
  104.        //   line(387,268,427,268);//top line
  105.     ellipse(407,268,0,360,20,5);//top ellipse
  106.     circle(407,298,15);//circle
  107.     //door
  108.     //  setstyle(SOLID_FILL,WHITE);
  109.     rectangle(256,298,326,435);
  110.     //left small tower
  111.     line(156,145,156,208);//left line
  112.     line(186,145,186,208);//right line
  113.     line(156,145,171,100);//left slant
  114.     line(186,145,171,100);//right slant
  115.     //right small tower
  116.     line(437,145,437,208);//left line
  117.     line(407,145,407,208);//right line
  118.     line(437,145,422,100);//left slant
  119.     line(407,145,422,100);//right slant
  120.     //horizontal strip
  121.     rectangle(126,208,467,248);
  122.     //center tower
  123.     rectangle(250,60,320,248);//body
  124.     line(250,60,285,25);//left slant
  125.     line(320,60,285,25);//right slant
  126.     rectangle(250,100,320,120);//rectangular slit
  127.     line(250,100,320,120);//left to right slant
  128.     line(320,100,250,120);//right to left slant
  129.     line(264,100,264,95);//stub 1
  130.     line(278,100,278,95);//stub 2
  131.     line(292,100,292,95);//stub 3
  132.     line(306,100,306,95);//stub 4
  133.        //   line(260,55,265,55);
  134.  
  135.     //setcolor(BROWN);
  136.     //fl//oodfill(265,55,WHITE);
  137.       //    setcolor(WHITE);
  138.  
  139.  
  140.         //flood_fill(315,110,0,4);
  141. }
  142. void rot(int obj1[10][10],int x,int y,int a)
  143. {
  144. float tx,ty,i,j,k;
  145. signed  t[10][10];
  146. signed  r[10][10];
  147. signed p1x,p1y,p2x,p2y,p3x,p3y;
  148. tx=x;
  149. ty=y;
  150. t[0][0]=cos(a*3.142/180);
  151. t[0][1]=sin(a*3.142/180);
  152. t[0][2]=0;
  153. t[1][0]=-sin(a*3.142/180);
  154. t[1][1]=cos(a*3.142/180);
  155. t[1][2]=0;
  156. t[2][0]=-tx*cos(a*3.142/180)+ty*sin(a*3.142/180)+tx;
  157. t[2][1]=-tx*sin(a*3.142/180)-ty*cos(a*3.142/180)+ty;
  158. t[2][2]=1;
  159.  
  160.     for(i=0;i<3;i++)
  161.     {
  162.         for(j=0;j<3;j++)
  163.         {
  164.             r[i][j]=0;
  165.             for(k=0;k<3;k++)
  166.             {
  167.                 r[i][j]=r[i][j]+obj1[i][k]*t[k][j];
  168.  
  169.  
  170.             }
  171.         // printf("%f",t[i][j]);
  172.         }
  173.         // printf("\n");
  174.     }
  175.  
  176.  
  177.     p1x=r[0][0];
  178.     p1y=r[0][1];
  179.     p2x=r[1][0];
  180.     p2y=r[1][1];
  181.     p3x=r[2][0];
  182.     p3y=r[2][1];
  183.  
  184.     setcolor(GREEN);
  185.         line(p1x,p1y,p2x,p2y);
  186.  
  187.     line(p2x,p2y,p3x,p3y);
  188.  
  189.     line(p3x,p3y,p1x,p1y);
  190.  
  191.  
  192.  
  193.  
  194. }
  195.  
  196.  
  197. void main()
  198. {
  199.     int gd=DETECT,gm,i,tx=1,ty=1,j,f,q;
  200.     int x1=40,x2=300,y1=40,y2=0 ,n;
  201.     int p1x,p2x,p1y,p2y,p3x,p3y,p4x,p4y;
  202.     int x[4]={559,420,370,353};
  203.     int y[4]={216,240,260,300};
  204.       //tranformation matrix
  205.     int t[10][10]={0};
  206.     //object matrix
  207.     int obj1[10][10],k;
  208.  
  209.     int r[10][10]={0};
  210.     //int x[20],y[20];    //bezier arrays
  211.     int z;//scaling loop
  212.     //int sx=1;
  213.     //int sy=1;
  214.     int d,h,h1,v;
  215.  
  216.  
  217.      initgraph(&gd,&gm,"c:\\tc\\bgi");
  218.      setcolor(WHITE);
  219.  
  220.      outtextxy(200,50,"The Battle of Hogwarts");
  221.      delay(1000);
  222.      outtextxy(230,250,"Brought to you by");
  223.      outtextxy(140,275,"Sahil Kathpal             Manthan Thakker");
  224.      delay(3000);
  225.      cleardevice();
  226.     // circle(52,320,26);
  227.      decorate();
  228.      outtextxy(170,50,"Hogwarts");
  229.      outtextxy(2,260,"Harry");
  230.      outtextxy(2,270,"Potter");
  231.      ellipse(52,320,0,360,26,18);
  232.     //body
  233.      line(52,348,52,406);
  234.     //left leg
  235.      line(52,406,35,433);
  236.     //right leg
  237.      line(52,396,72,433);
  238.      //right hand
  239.      line(52,374,89,342);
  240.      //left hand
  241.      line(52,374,41,408);
  242.      obj1[0][0]=52;obj1[0][1]=374;obj1[0][2]=1;
  243.      obj1[1][0]=89;obj1[1][1]=342;obj1[1][2]=1;
  244.      obj1[2][0]=40;obj1[2][1]=330;obj1[2][2]=1;
  245.      rot(obj1,52,374,30);
  246.      setcolor(WHITE);
  247.      outtextxy(490,150,"Lord Voldemort");
  248.      //voldertman
  249.      //body
  250.      line(608,310,608,210);
  251.      //right leg
  252.  
  253.      line(608,310,634,343);
  254.      //     left leg
  255.      line(606,308,589,347);
  256.      //right hand
  257.      line(608,250,629,299);
  258.      //left hand
  259.      line(608,250,580,240);
  260.      //left arm
  261.      line(580,240,559,216);
  262.      circle(608,190,20);
  263.            n=5;
  264.         flood_fill(265,55,0,1);
  265.        setcolor(BLACK);
  266.        line(52,374,89,342);
  267.        for(i=1;i<10;i++)
  268.        {
  269.        h=89;
  270.        h1=342;
  271.        q=i;
  272.        v=i*4;
  273.        setcolor(WHITE);
  274.        line(52,374,h+q,h1+v);
  275.        delay(100);
  276.        setcolor(BLACK);
  277.        line(52,374,h+q,h1+v);
  278.        }
  279.        for(i=1;i<10;i++)
  280.        {
  281.        h=99;
  282.        h1=378;
  283.        q=i*2;
  284.        v=i*4;
  285.        setcolor(WHITE);
  286.        line(52,374,h-q,h1-v);
  287.        delay(100);
  288.        setcolor(BLACK);
  289.        line(52,374,h-q,h1-v);
  290.        }
  291.        setcolor(WHITE);
  292.        line(52,374,89,342);
  293.       for(i=0;i<20;i++)
  294.       {
  295.       setcolor(RED);
  296.      koch(x1,y1,x2,y2,n);
  297.        y2++;
  298.        }
  299.  
  300.       setcolor(GREEN);
  301.     //  beizer(x,y);
  302.  
  303.  
  304.  
  305.  
  306.  
  307.    /*   for(i=0;i<4;i++)
  308.     {
  309.     printf("enter coordinates of point %d\n",i+1);
  310.     scanf("%d%d",&x[i],&y[i]);
  311.     }
  312.     beizer(x,y);
  313.      */
  314.     // circle(375,300,20);
  315.      beizer(x,y);
  316.      x[0]=560;x[1]=421;x[2]=371;x[3]=354;
  317.      y[0]=217;y[1]=241;y[2]=261;y[3]=301;
  318.      //delay(1000);
  319.      beizer(x,y);
  320.      x[0]=561;x[1]=422;x[2]=372;x[3]=355;
  321.      y[0]=218;y[1]=242;y[2]=262;y[3]=302;
  322.      //delay(1000);
  323.     beizer(x,y);
  324.     //delay(1000);
  325.          x[0]=562;x[1]=423;x[2]=373;x[3]=356;
  326.      y[0]=219;y[1]=243;y[2]=263;y[3]=303;
  327.      beizer(x,y);
  328.      //delay(500);
  329.          x[0]=563;x[1]=424;x[2]=374;x[3]=357;
  330.      y[0]=220;y[1]=244;y[2]=264;y[3]=304;
  331.      beizer(x,y);
  332.      delay(200);
  333.      //erasing voldermorts ray
  334.     setcolor(BLACK);
  335.          beizer(x,y);
  336.      x[0]=560;x[1]=421;x[2]=371;x[3]=354;
  337.      y[0]=217;y[1]=241;y[2]=261;y[3]=301;
  338.  
  339.      beizer(x,y);
  340.      x[0]=561;x[1]=422;x[2]=372;x[3]=355;
  341.      y[0]=218;y[1]=242;y[2]=262;y[3]=302;
  342.  
  343.     beizer(x,y);
  344.  
  345.          x[0]=562;x[1]=423;x[2]=373;x[3]=356;
  346.      y[0]=219;y[1]=243;y[2]=263;y[3]=303;
  347.      beizer(x,y);
  348.      delay(500);
  349.          x[0]=563;x[1]=424;x[2]=374;x[3]=357;
  350.      y[0]=220;y[1]=244;y[2]=264;y[3]=304;
  351.      beizer(x,y);
  352.      setcolor(WHITE);
  353.      //harry spell time 2
  354.       for(i=0;i<20;i++)
  355.       {
  356.       setcolor(BLACK);
  357.  
  358.      koch(x1,y1,x2,y2,n);
  359.  
  360.        y2--;
  361.        setcolor(WHITE);
  362.        decorate();
  363.        }
  364.            n=5;
  365.  
  366.        setcolor(BLACK);
  367.        line(52,374,89,342);
  368.        for(i=1;i<10;i++)
  369.        {
  370.        h=89;
  371.        h1=342;
  372.        q=i*2;
  373.        v=i*4;
  374.        setcolor(WHITE);
  375.        line(52,374,h+q,h1+v);
  376.        delay(100);
  377.        setcolor(BLACK);
  378.        line(52,374,h+q,h1+v);
  379.        }
  380.        for(i=1;i<10;i++)
  381.        {
  382.        h=99;
  383.        h1=378;
  384.        q=i;
  385.        v=i*4;
  386.        setcolor(WHITE);
  387.        line(52,374,h-q,h1-v);
  388.        delay(100);
  389.        setcolor(BLACK);
  390.        line(52,374,h-q,h1-v);
  391.        }
  392.        setcolor(WHITE);
  393.        line(52,374,89,342);
  394.       for(i=0;i<20;i++)
  395.       {
  396.       setcolor(RED);
  397.      koch(x1,y1,x2,y2,n);
  398.        y2++;
  399.        }
  400.    //pebble
  401.      line(353,300,356,304);
  402.      delay(100);
  403.      line(356,304,350,304);
  404.      delay(100);
  405.      line(356,304,350,304);
  406.       delay(1050);
  407.      setcolor(GREEN);
  408.      line(608,310,608,210);
  409.      //right leg
  410.  
  411.      line(608,310,634,343);
  412.      //     left leg
  413.      line(606,308,589,347);
  414.      //right hand
  415.      line(608,250,629,299);
  416.      //left hand
  417.      line(608,250,580,240);
  418.      //left arm
  419.      line(580,240,559,216);
  420.      circle(608,190,20);
  421.  
  422.     // delay(100);
  423.     // line(353,320,400,320);
  424.    //  delay(100);
  425.     // line(353,325,400,325);
  426.     //translating stone
  427.     p1x=353;  p1y=300;
  428.     p2x=356; p2y=304;
  429.     p3x=350; p3y=304;
  430.     obj1[0][0]=p1x;
  431.     obj1[0][1]=p1y;
  432.     obj1[0][2]=1;
  433.      obj1[1][0]=p2x;
  434.     obj1[1][1]=p2y;
  435.     obj1[1][2]=1;
  436.      obj1[2][0]=p3x;
  437.     obj1[2][1]=p3x;
  438.     obj1[2][2]=1;
  439.    // for(z=0;z<3;z++)
  440.    // {
  441.    // for(i=0;i<3;i++)   {
  442.    // printf("%d",obj1[z][i]);
  443.    // }
  444.    // printf("\n");
  445.     //}
  446.     for(z=0;z<90;z++)
  447.     {
  448.     delay(50);
  449.     decorate();
  450.  
  451.             setcolor(BLACK);
  452.             line(p1x,p1y,p2x,p2y);
  453.  
  454.     line(p2x,p2y,p3x,p3y);
  455.  
  456.     line(p3x,p3y,p1x,p1y);
  457.     setcolor(WHITE);
  458.  
  459.     t[0][0]=1;
  460.     t[0][1]=0;
  461.     t[0][2]=0;
  462.     t[1][0]=0;
  463.     t[1][1]=1;
  464.     t[1][2]=0;
  465.     t[2][0]=tx;
  466.     t[2][1]=ty;
  467.     t[2][2]=1;
  468.  
  469.     tx=tx+3;
  470.     ty--;
  471.  
  472.     //multiplying two matrices
  473.     for(i=0;i<3;i++)
  474.     {
  475.         for(j=0;j<3;j++)
  476.         {
  477.             r[i][j]=0;
  478.             for(k=0;k<3;k++)
  479.             {
  480.                 r[i][j]=r[i][j]+obj1[i][k]*t[k][j];
  481.  
  482.  
  483.             }
  484.          // printf("%d",t[i][j]);
  485.         }
  486.          // printf("\n");
  487.     }
  488.  
  489.     p1x=r[0][0];
  490.     p1y=r[0][1];
  491.     p2x=r[1][0];
  492.     p2y=r[1][1];
  493.     p3x=r[2][0];
  494.     p3y=r[2][1];
  495.  
  496.     setcolor(GREEN);
  497.         line(p1x,p1y,p2x,p2y);
  498.  
  499.     line(p2x,p2y,p3x,p3y);
  500.  
  501.     line(p3x,p3y,p1x,p1y);
  502.     }
  503.  
  504.       //    for(d=0;d<3;d++)
  505.        //   {
  506.            //   for(f=0;f<3;f++)
  507.            //   {
  508.            //       printf( "%d",r[d][f]);
  509.            //     }
  510.          // printf("\n");
  511.            //   }
  512.     /*obj[0][0]=p1x;
  513.     obj[0][1]=p1y;
  514.     obj[0][2]=1;
  515.     obj[1][0]=p2x;
  516.     obj[1][1]=p2y;
  517.     obj[1][2]=1;
  518.     obj[2][0]=p3x;
  519.     obj[2][1]=p3y;
  520.     sx=2;
  521.        for(z=0;z<1;z++)
  522.        {
  523.     t[0][0]=sx;
  524.     t[0][1]=0;
  525.     t[0][2]=0;
  526.     t[1][0]=0;
  527.     t[1][1]=sy;
  528.     t[1][2]=0;
  529.     t[2][0]=0;
  530.     t[2][1]=0;
  531.     t[2][2]=1;
  532.     //multiplying two matrices
  533.     for(i=0;i<3;i++)
  534.     {
  535.         for(j=0;j<3;j++)
  536.         {
  537.             r[i][j]=0;
  538.             for(k=0;k<3;k++)
  539.             {
  540.                 r[i][j]=r[i][j]+obj[i][k]*t[k][j];
  541.                 printf("r[%d][%d]=%d\n",i,j,r[i][j]);
  542.             }
  543.         }
  544.     }
  545.     p1x=r[0][0];
  546.     p1y=r[0][1];
  547.     p2x=r[1][0];
  548.     p2y=r[1][1];
  549.     p3x=r[2][0];
  550.     p3y=r[2][1];
  551.  
  552.         line(p1x,p1y,p2x,p2y);
  553.  
  554.     line(p2x,p2y,p3x,p3y);
  555.  
  556.     line(p3x,p3y,p1x,p1y);
  557.     }*/
  558.  
  559.      koch(580,240,400,216,5);
  560.        for(i=0;i<20;i++)
  561.       {
  562.       setcolor(BLACK);
  563.  
  564.      koch(x1,y1,x2,y2,n);
  565.  
  566.        y2--;
  567.        setcolor(WHITE);
  568.        decorate();
  569.        }
  570.        setcolor(BLACK);
  571.        line(p1x,p1y,p2x,p2y);
  572.        line(p2x,p2y,p3x,p3y);
  573.        line(p3x,p3y,p1x,p1y);
  574.        for(i=1;i<10;i++)
  575.        {
  576.        setcolor(GREEN);
  577.        q=i*5;
  578.        line(p1x,p1y,p2x,p2y);
  579.        line(p2x,p2y,p3x,p3y-q);
  580.        line(p1x,p1y,p3x,p3y-q);
  581.        delay(100);
  582.        setcolor(BLACK);
  583.        line(p1x,p1y,p2x,p2y);
  584.        line(p2x,p2y,p3x,p3y-q);
  585.        line(p1x,p1y,p3x,p3y-q);
  586.        }
  587.        circle(608,190,20);
  588.        for(i=1;i<10;i++)
  589.        {    setcolor(GREEN);
  590.         q=i*5;
  591.         circle(608,190,20+q);
  592.         delay(100);
  593.         setcolor(BLACK);
  594.         circle(608,190,20+q);
  595.        }
  596.        delay(2000);
  597.        cleardevice();
  598.        setcolor(WHITE);
  599.        outtextxy(160,200,"Voldy's gone mouldy, so now lets have fun!!");
  600.      getch();
  601.  
  602. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement