zoukankan      html  css  js  c++  java
  • openGL 六边形

    #include "stdafx.h"
    #include<GL/glut.h>
    #include<math.h>
    #include<stdlib.h>
    
    
    const double TWO_PI = 6.2831853;
    
    /*Initial display-window size*/
    GLsizei winWidth = 400, winHeight = 400;
    GLuint regHex;
    
    class screenPt
    {
    private:
        GLint x, y;
    public:
        /*Default Constructor:initalizes coordinate position to(0,0).*/
        screenPt() { x = y = 0; }
        void setGoords(GLint xGoord, GLint yGoord) { x = xGoord; y = yGoord; }
        GLint getx()const { return x; }
        GLint gety()const { return y; }
    };
    
    static void init(void)
    {
        screenPt hexVertex, circCtr;
        GLdouble theta;
        GLint k;
        /*Set circle center coordinates.*/
        circCtr.setGoords(winWidth / 2, winHeight / 2);
    
        glClearColor(1.0, 1.0, 1.0, 0.0);//Display-window color=white.
    
                                         /*Set up a display list for a red regular hexagon.
                                         *Vertice for the hexagon are six equally spaced
                                         *points around the circumference of a circle.
                                         */
        regHex = glGenLists(1);//Get an identifier for the display list.
        glNewList(regHex, GL_COMPILE);
        glColor3f(1.0, 0.0, 0.0);//Set fill color for hexagon to red.
        glBegin(GL_POLYGON);
        for (k = 0; k < 6; k++)
        {
            theta = TWO_PI*k / 6.0;
            hexVertex.setGoords(circCtr.getx() + 150 * cos(theta),
                circCtr.gety() + 150 * sin(theta));
            glVertex2i(hexVertex.getx(), hexVertex.gety());
        }
        glEnd();
        glEndList();
    }
    void regHexagon(void)
    {
        glClear(GL_COLOR_BUFFER_BIT);
            glCallList(regHex);
        glFlush();
    }
    void winReshapeFcn(GLint newWidth, GLint newHeight)
    {
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        gluOrtho2D(0.0, (GLdouble)newWidth, 0.0, (GLdouble)newHeight);
        glClear(GL_COLOR_BUFFER_BIT);
    
    }
    void main(int argc, char** argv)
    {
        glutInit(&argc, argv);
        glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
        glutInitWindowPosition(100, 100);
        glutInitWindowSize(winWidth, winHeight);
        glutCreateWindow("Reshape-Function&Display-ListExample");
    
        init();
        glutDisplayFunc(regHexagon);
        glutReshapeFunc(winReshapeFcn);
        glutMainLoop();
    }

     

    随便用
  • 相关阅读:
    原型模式(Prototype Pattern) 资料合集
    建筑者 & 生成器模式 (Builder Pattern) 资料合集
    CodeProject每日精选: Dialogs and Windows
    CodeProject每日精选: Edit Controls (TextBox, RichTextBox)
    抽象工厂资料汇总
    CodeProject每日精选 Winform Combo and Listboxes
    CodeProject每日精选: Date/Time controls 控件推荐
    Winform按钮推荐 2007.3.8
    hdu 2200
    hdu 1143总结
  • 原文地址:https://www.cnblogs.com/pqhuang/p/11268936.html
Copyright © 2011-2022 走看看