Advertisement
MHSS

All

May 1st, 2015
241
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.54 KB | None | 0 0
  1. //DDA
  2. int xround(float m){
  3.     int p=int(m);
  4.     if(m-p>=0.5)
  5.     return p+1;
  6.     else
  7.     return p;
  8. }
  9. void dda(int x1,int y1,int x2,int y2,int color){
  10.     int i,dx=x2-x1,dy=y2-y1;
  11.     float steps;
  12.     if(dx>dy)
  13.     steps=dx;
  14.     else
  15.     steps=dy;
  16.     float xinc=float(dx)/steps;
  17.     float x=x1;
  18.     float y=y1;
  19.     float yinc=float(dy)/steps;
  20.     putpixel(xround(x),xround(y),color);
  21.     for(i=0 ; i<steps ; i++){
  22.         x=x+xinc;
  23.         y=y+yinc;
  24.         putpixel(xround(x),xround(y),color);
  25.     }
  26. }
  27.  
  28.  
  29.  
  30. //BRESLINE
  31. int one(int p){
  32.     int p1;
  33.     if(p<0)
  34.     p1=-1;
  35.     else p1=1;
  36.     return p1;
  37. }
  38. void bres(int x1,int y1,int x2,int y2,int color){
  39.     int dx,i,dy,p,x,y,xend,yend;
  40.     int xinc=one(x2-x1);
  41.     int yinc=one(y2-y1);
  42.     dx=abs(x2-x1);
  43.     dy=abs(y2-y1);
  44.     x=x1; y=y1;
  45.     if(dx>dy){
  46.         p=2*dy-dx;
  47.         putpixel(x,y,color);
  48.         for(i=0;i<dx;i++){
  49.             x+=xinc;
  50.             if(p<0)
  51.             p=p+2*dy;
  52.             else{
  53.                 y+=yinc;
  54.                 p=p+2*(dy-dx);
  55.             }
  56.             putpixel(x,y,color);
  57.         }
  58.     }
  59.     else{
  60.         p=2*dx-dy;
  61.         putpixel(x,y,color);
  62.         for(i=0;i<dy;i++){
  63.             y+=yinc;
  64.             if(p<0)
  65.             p=p+2*dx;
  66.             else{
  67.                 x+=xinc;
  68.                 p=p+2*(dx-dy);
  69.             }
  70.             putpixel(x,y,color);
  71.         }
  72.     }
  73. }
  74.  
  75.  
  76. //BRESCIRCLE
  77. void plot(int xc,int yc,int x,int y){
  78.     putpixel(xc+x,yc+y,WHITE);
  79.     putpixel(xc-x,yc+y,WHITE);
  80.     putpixel(xc+x,yc-y,WHITE);
  81.     putpixel(xc-x,yc-y,WHITE);
  82.     putpixel(xc+y,yc+x,WHITE);
  83.     putpixel(xc-y,yc+x,WHITE);
  84.     putpixel(xc+y,yc-x,WHITE);
  85.     putpixel(xc-y,yc-x,WHITE);
  86. }
  87. void bres(int xc,int yc,int radius){
  88.     int x=0,y=radius;
  89.     int p=1-radius;
  90.     plot(xc,yc,x,y);
  91.     while(x<y){
  92.         x++;
  93.         if(p<0)
  94.         p=p+2*x+1;
  95.         else{
  96.             y--;
  97.             p=p+2*(x-y)+1;
  98.         }
  99.         plot(xc,yc,x,y);
  100.     }
  101. }
  102.  
  103.  
  104. //MIDCIRCLE
  105. void plot(int xc,int yc,int x,int y){
  106.     putpixel(xc+x,yc+y,WHITE);
  107.     putpixel(xc-x,yc+y,BLUE);
  108.     Putpixel(xc+x,yc-y,WHITE);
  109.     putpixel(xc-x,yc-y,BROWN);
  110.     putpixel(xc+y,yc+x,WHITE);
  111.     putpixel(xc-y,yc+x,GREEN);
  112.     putpixel(xc+y,yc-x,WHITE);
  113.     putpixel(xc-y,yc-x,WHITE);
  114. }
  115. void midpoint(int xc,int yc,int r){
  116.     x=0;
  117.     y=r;
  118.     plot(xc,yc,x,y);
  119.     p=1-r;
  120.     while(x<y){
  121.         x++;
  122.         if(p<0)
  123.         p=p+2*(x+1);
  124.         else{
  125.             y--;
  126.             p=p+2*(x-y)+1;
  127.         }
  128.         plot(xc,yc,x,y);
  129.     }
  130. }
  131.  
  132.  
  133.  
  134. //MIDELLIPSE
  135. void plot(int x,int y,int xc,int yc){
  136.     putpixel(xc+x,yc+y,RED);
  137.     putpixel(xc+x,yc-y,RED);
  138.     putpixel(xc-x,yc+y,RED);
  139.     putpixel(xc-x,yc-y,RED);
  140. }
  141. void myellipse(long xc,long yc,long rx,long ry){
  142.     long rx2=rx*rx,ry2=ry*ry,twoRx2=2*rx2,p;
  143.     long twoRy2=2*ry2,px=0,py=twoRx2*ry;
  144.     long x=0,y=ry;
  145.     p=ry2-rx2*ry+0.25*ry2;
  146.     plot(0,ry,xc,yc);
  147.     while(px<py){
  148.         x++;
  149.         px=px+twoRy2;
  150.         if(p<0)
  151.         p=p+px+ry2;
  152.         else{
  153.             y--;
  154.             py=py-twoRx2;
  155.             p=p+px-py+ry2;
  156.         }
  157.         plot(x,y,xc,yc);
  158.     }
  159.     p=(ry2*(x+0.5)*(x+0.5))+(rx2*(y-1)*(y-1))-(rx2*ry2);
  160.     while(y>0){
  161.         y--;
  162.         py=py-twoRx2;
  163.         if(p<0){
  164.             x++;
  165.             px=px+twoRy2;
  166.             p=p+px-py-rx2;
  167.         }
  168.         else
  169.         p=p-py-rx2;
  170.         plot(x,y,xc,yc);
  171.     }
  172. }
  173.  
  174.  
  175.  
  176. //FILL
  177. void bound(int x,int y,int fillcolor,int bcolor){
  178.     int color=getpixel(x,y);
  179.     if(color!=fillcolor && color != bcolor){
  180.         putpixel(x,y,fillcolor);
  181.         bound(x+1,y,fillcolor,bcolor);
  182.         bound(x-1,y,fillcolor,bcolor);
  183.         bound(x,y-1,fillcolor,bcolor);
  184.         bound(x,y+1,fillcolor,bcolor);
  185.     }
  186. }
  187. void flood(int x,int y,int fillcolor,int oldcolor){
  188.     if(getpixel(x,y)==oldcolor){
  189.         putpixel(x,y,fillcolor);
  190.         flood(x+1,y,fillcolor,oldcolor);
  191.         flood(x-1,y,fillcolor,oldcolor);
  192.         flood(x,y+1,fillcolor,oldcolor);
  193.         flood(x,y-1,fillcolor,oldcolor);
  194.     }
  195. }
  196.  
  197.  
  198. //REFLECTION
  199. int poly[30],a[9][3],b[3][3],c[9][3],poly2[30];
  200. int x=1,p,i,j,k,xc,yc,ch,op;
  201. void ref(){
  202.     xc=getmaxx()/2;
  203.     yc=getmaxy()/2;
  204.     setfillstyle(0,0);
  205.     printf("\n\n Enter number of points : ");
  206.     scanf("%d",&p);
  207.     j=0;
  208.     for(i=0;i<p*2;i+=2){
  209.         printf("\n Enter cordinate point x%d and y%d : ",j+1,j+1);
  210.         scanf("%d",&poly[i]);
  211.         scanf("%d",&poly[i+1]);
  212.         j++;
  213.     }
  214.     poly[p*2]=poly[0];
  215.     poly[p*2+1]=poly[1];
  216.     for(i=0;i<p*2;i+=2){
  217.         poly2[i]=xc+poly[i];
  218.         poly2[i+1]=yc-poly[i+1];
  219.     }
  220.     poly2[p*2]=poly2[0];
  221.     poly2[p*2+1]=poly2[1];
  222.     fillpoly(p+1,poly2);
  223.     line(0,yc,xc*2,yc);
  224.     line(xc,0,xc,yc*2);
  225.     j=0;
  226.     for(i=0;i<p;i++){
  227.         a[i][0]=poly[j];
  228.         a[i][1]=poly[++j];
  229.         a[i][2]=1;
  230.         ++j;
  231.     }
  232.     for(i=0;i<3;i++)
  233.     for(j=0;j<3;j++){
  234.         b[i][j]=0;
  235.         if(i==j)
  236.         b[i][j]=1;
  237.     }
  238.     b[0][0]=-1;
  239.  
  240.  
  241.     for(i=0;i<p;i++)
  242.     for(j=0;j<3;j++){
  243.         c[i][j]=0;
  244.         for(k=0;k<3;k++)
  245.         c[i][j]=c[i][j]+a[i][k]*b[k][j];
  246.     }
  247.     printf("\n\n\n\n\n\n\n\n\n Reflection : ");
  248.     for(i=0;i<p;i++){
  249.         printf("\n");
  250.         for(j=0;j<3;j++)
  251.         printf("%d\t",c[i][j]);
  252.     }
  253.     for(i=0,j=0;i<p;i++,j+=2){
  254.         poly[j]=xc+c[i][0];
  255.         poly[j+1]=yc-c[i][1];
  256.     }
  257.     poly[j]=poly[0];
  258.     poly[j+1]=poly[1];
  259.     fillpoly(p+1,poly);
  260. }
  261.  
  262.  
  263.  
  264. //TRANSLATION
  265. int i,x,y,tx,ty,sx,sy,angle=10,xmax,ymax,xmid,ymid,op=1;
  266. float p1[10]={50,50,100,50,100,100,50,100,50,50};
  267. float b[3][3]={1,0,0,0,1,0,0,0,1};
  268. int c[1][1];
  269. float a[1][1];
  270.  
  271. void trans(){
  272.     printf("\nEnter x translation: ");
  273.     scanf("%d",&tx);
  274.     printf("\nEnter y translation: ");
  275.     scanf("%d",&ty);
  276.     b[0][0]=1;b[0][1]=0;b[0][2]=0;b[1][0]=0;
  277.     b[1][1]=1;b[1][2]=0;b[2][0]=tx;b[2][1]=ty;b[2][2]=1;
  278. }
  279. void main(){
  280.     int gd=DETECT,gm;
  281.     clrscr();
  282.     initgraph(&gd, &gm, "C:\\turboc3\\bgi");
  283.     trans();
  284.     xmax=getmaxx();
  285.     ymax=getmaxy();
  286.     xmid=xmax/2;
  287.     ymid=ymax/2;
  288.     setcolor(1);
  289.     line(xmid,0,xmid,ymax);
  290.     line(0,ymid,xmax,ymid);
  291.     setcolor(4);
  292.     for(i=0;i<8;i=i+2)
  293.     line(p1[i]+xmid,ymid-p1[i+1],xmid+p1[i+2],ymid-p1[i+3]);
  294.     for(i=0;i<9;i=i+2){
  295.         a[0][0]=p1[i];a[0][1]=p1[i+1];
  296.         c[0][0]=a[0][0]*b[0][0]+a[0][1]*b[1][0]+b[2][0];
  297.         c[0][1]=a[0][0]*b[0][1]+a[0][1]*b[1][1]+b[2][1];
  298.         p1[i]=c[0][0];
  299.         p1[i+1]=c[0][1];
  300.     }
  301.     setcolor(15);
  302.     for(i=0;i<8;i=i+2)
  303.     line(p1[i]+xmid,ymid-p1[i+1],xmid+p1[i+2],ymid-p1[i+3]);
  304.     getch();
  305. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement