OpenGLの六角

#include " STDAFX.H " 
の#include <GL / glut.h> 
の#include <math.h>の
書式#include <STDLIB.H> CONST ダブル TWO_PI = 6.2831853 / * 初期表示ウィンドウサイズ* / 
GLsizei winWidth = 400、winHeight = 400 
GLuint regHex; クラスscreenPt 
{ プライベート
    グリントX、Y。公共/ * デフォルトコンストラクタ:初期化しますが、(0,0)に位置を調整します。* / 
    screenPt(){X = Y = 0


 





; }
     ボイド setGoords(グリントxGoord、グリントyGoord){X = xGoord。Y = yGoord。} 
    輝きのgetX()のconst { 戻りX。} 
    輝きのgetY()のconst { 戻りY。} 
}。

静的 ボイドのinit(ボイド
{ 
    screenPt hexVertex、circCtr。
    GLdoubleシータ; 
    GLINT kを、
    / * 設定した円の中心座標。* / 
    circCtr.setGoords(winWidth / 2、winHeight / 2 )。

    glClearColor(1.01.01.00.0)。// 表示ウィンドウの色=白。

                                     / * 赤正六角形の表示リストを設定します。
                                     *六角形のためのヴェルは、6つの等間隔に配置されている
                                     円の円周の周りに*ポイント。
                                     * / 
    regHex = glGenLists(1)。// 表示リストの識別子を取得します。
    glNewList(regHex、GL_COMPILE)。
    glColor3f(1.00.00.0)。// 赤に六角に設定された塗りつぶしの色。
    glBegin(GL_POLYGON)。
    (K =0 ; K < 6K ++ 
    { 
        シータ = TWO_PI * K / 6.0 
        hexVertex.setGoords(circCtr.getx() + 150の * COS(シータ)、
            circCtr.gety() + 150 * 罪(シータ)); 
        glVertex2i(hexVertex.getx()、hexVertex.gety())。
    } 
    glEndの()。
    glEndList(); 
} 
ボイド regHexagon(ボイド
{ 
    にglClear(GL_COLOR_BUFFER_BIT)。
        glCallList(regHex)。
    glFlush(); 
} 
のボイドwinReshapeFcn(グリントnewWidth、グリントnewHeight)
{ 
    glMatrixMode(GL_PROJECTION)。
    glLoadIdentity(); 
    gluOrtho2D(0.0、(GLdouble)newWidth、0.0 (GLdouble)newHeight)。
    glClear(GL_COLOR_BUFFER_BIT)。

} 
ボイドメイン(int型 ARGC、チャー ** ARGV)
{ 
    glutInit( ARGC、ARGV)。
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB)。
    glutInitWindowPosition(100100 )。
    glutInitWindowSize(winWidth、winHeight)。
    glutCreateWindow("およびディスプレイ・ListExampleファンクションを再構築

    のinit(); 
    glutDisplayFunc(regHexagon); 
    glutReshapeFunc(winReshapeFcn); 
    glutMainLoop(); 
}

 

おすすめ

転載: www.cnblogs.com/pqhuang/p/11268936.html