zoukankan      html  css  js  c++  java
  • 作业

    #include <GL/glut.h>
    #include "math.h"
    #include<iostream>
    #define PI 3.1415926
    #define NUMBER  8
    #define RADIUS 400
    using namespace std;
    //===================================================================
    struct Node
    {
     int x,y;
    };
    struct Edge
    {
     Node s,e;
    }E[11];
    int map[111][111];
    int v[111][111];
    int maxx,maxy,minx,miny;
    int n;//多边形边的数量
    int fmin(int x,int y)
    {
     if(x<y) return x;
     return y;
    }
    int fmax(int x,int y)
    {
     if(x>y) return x;
     return y;
    }
    void init()
    {
     int i;
     printf("请输入多边形边的数量: ");
     scanf("%d",&n);
     printf("请按照逆时针输入多边形的各个定点: ");
     for(i=1;i<=n;i++)
     {
      scanf("%d%d",&E[i].s.x,&E[i].s.y);
      E[i-1].e.x=E[i].s.x,E[i-1].e.y=E[i].s.y;
      minx=fmin(E[i].s.x,minx);
      maxx=fmax(E[i].s.x,maxx);
      miny=fmin(E[i].s.y,miny);
      maxy=fmax(E[i].s.y,maxy);
      
     }
     E[n].e.x=E[1].s.x;E[n].e.y=E[1].s.y;
    }
    void cover(int x,int y)
    {
     
     int xx=x;
     while(xx<maxx)
      map[xx++][y]^=1;
    }
    void DDa(int x0,int y0,int x1,int y1)
    {
     
     if(y0<y1)
     {
      int t;
      t=x0;
      x0=x1;
      x1=t;
      t=y0;
      y0=y1;
      y1=t;
     }
     int dx,dy,epsl,k;
     float x,y,xIncre,yIncre;
     dx=x1-x0;dy=y1-y0;
     x=x0;y=y0;
     if(abs(dx)>abs(dy)) epsl=abs(dx);
     else epsl=abs(dy);
     xIncre=(float)dx/(float)epsl;
     yIncre=(float)dy/(float)epsl;
     for(k=0;k<=epsl;k++)
     {
      if(k==0)continue;
      cover(int(x+0.5),int(y+0.5));
      x+=xIncre;
      y+=yIncre;
     }
    }

    void solve()
    {
     memset(map,0,sizeof(map));
     // memset(v,0,sizeof(v));
     int i;
     for(i=1;i<=n;i++)
      DDa(E[i].s.x,E[i].s.y,E[i].e.x,E[i].e.y);
    }
    void myinit(void)
    {
          glClearColor(1.0, 1.0, 1.0, 1.0); /* white background */
          glColor3f(0.0, 0.0, 1.0); /* draw in red */

       glPointSize(10);
          glMatrixMode(GL_PROJECTION);
      glLoadIdentity();
      gluOrtho2D(-5, 15, -5, 15);
          glMatrixMode(GL_MODELVIEW);

       glEnable(GL_COLOR_LOGIC_OP);
    }
    void gl(double x1,double y1,double x2,double y2)//划线函数
    {
      glBegin(GL_LINES);
                  glVertex2f(x1,y1);
         glVertex2f(x2,y2);
              glEnd();
    }
    void gP(int x,int y)//划线函数
    {
        glBegin(GL_POINTS);
                  glVertex2i(x,y);
       
              glEnd();

    }
    void grow(double x,double y,double l,double fai)
    {
     if(fabs(l-2.9)<1.0)//
      return ;
     double x1=x+cos(fai)*l,y1=y+sin(fai)*l;
     gl(x,y,x1,y1);//先序划线
     grow(x1,y1,l*0.618*0.618,fai+PI/3.0);//分别划左右儿子
     grow(x1,y1,l*0.618*0.618,fai-PI/3.0);//
     grow(x1,y1,l*0.618,fai);//
    }
    void zuobiao(int minx,int maxx,int miny,int maxy)
    {
     int i;
     for(i=miny;i<=maxy;i++)
      gl(minx,i,maxx+3,i);
     for(i=minx;i<=maxx;i++)
      gl(i,miny,i,maxy+3);
     
    }
    //===================================================================
    void display( void )
    {
      
        glClear(GL_COLOR_BUFFER_BIT);  /*clear the window */
     zuobiao(0,7,0,7);
    // gP(0,0);
     for(int i=maxy;i>=miny;i--)
     {
      for(int j=minx;j<=maxx;j++)
       if(map[j][i])
       gP(j,i);
       
     }
        glFlush();
    }


    //===================================================================
    void main(int argc, char** argv)
    {

    /* Standard GLUT initialization */
     int i,j;
     init();
     solve();
        glutInit(&argc,argv);
        glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); /* default, not needed */
        glutInitWindowSize(500,500); /* 500 x 500 pixel window */
        glutInitWindowPosition(0,0); /* place window top left on display */
        glutCreateWindow("Diamond"); /* window title */
        glutDisplayFunc(display); /* display callback invoked when window opened */
     
     myinit(); /* set attributes */

        glutMainLoop(); /* enter event loop */
    }

  • 相关阅读:
    说到算法怎么可以少了排序呢~
    常用的re正则
    书到用时方恨少-- 正则,待修
    闲逛各个牛人的博客,观后感
    二叉树:B+tree等
    列表,链表,队列
    简述各种锁
    MongoDB
    python爬虫基础应用----爬取无反爬视频网站
    Django缓存管理的6种方法
  • 原文地址:https://www.cnblogs.com/zhangdashuai/p/4530687.html
Copyright © 2011-2022 走看看