数学的魅力 之 正多边形

之前上的数学课觉的老师讲的只是一些理论,感到没有意思,但是发现计算机中最重要的还是数学。不多说了献上今天讲的内容、
每一个正n边型的内角都等于((n-2)*180°))/n(其中n表示正n变形的边数)

个人的理解:每个正n边型有n个等腰三角形,得到每个三角形对应的顶角为(360°/n)(你表示底边),再将三角型从定点向下做垂线再将三角型分成两个直角三角形,此时顶角的公式变成(180°/n)。正n边行的边长为an = 2Rsin(180°/n),所以周长为c=2nRsin(180°/n)
在计算正多边形的时候还可以使用有公式为[Rcos(2PIi/n),Rsin(2PIi/n)] 其中2PI/n(个人理解为每次步进的角度,当n为4变形的时候,每次旋转的角度为PI/2,即90°,当n为8的时候,每次旋转的角度为2PI/8,即45°),每次通过循环变量i进行控制所转到的位置,从而确定要绘制的点的位置。献上代码
    int n=3600;  //圆绘制次数
float PI=3.1415926f;
float R=0.8f;  //半径

void myDisplay(void)
{
    //画圆
    glClear(GL_COLOR_BUFFER_BIT);
    glClearColor(0,0,0,0);
    glColor4f(0,0,1,0);
    glBegin(GL_POLYGON);
    for(int i=0;i<n;i++)
    {
        glVertex2f(R*cos(2*PI*i/n),R*sin(2*PI*i/n));   //定义顶点
    }
    glEnd();
    glFlush();


}

int main(int argc, char *argv[])
{
    glutInit(&argc, argv);   //初始化GLUT
    glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
    glutInitWindowPosition(100, 100);
    glutInitWindowSize(400, 400);                
    glutCreateWindow("My first OpenGL program");//显示文本框的名称
    glutDisplayFunc(&myDisplay);   //回调函数
    glutMainLoop();    //持续显示,当窗口改变会重新绘制图形
    return 0;
}

结果如下图:

其中元的显示样式由n的大小决定,当n的值越大的时候,显示的圆形越圆。

posted @ 2017-05-17 19:15  xingchen95  阅读(545)  评论(0编辑  收藏  举报