zoukankan      html  css  js  c++  java
  • 数学的魅力 之 正多边形

    之前上的数学课觉的老师讲的只是一些理论,感到没有意思,但是发现计算机中最重要的还是数学。不多说了献上今天讲的内容、
    每一个正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的值越大的时候,显示的圆形越圆。

  • 相关阅读:
    228. Summary Ranges
    227. Basic Calculator II
    224. Basic Calculator
    222. Count Complete Tree Nodes
    223. Rectangle Area
    221. Maximal Square
    220. Contains Duplicate III
    219. Contains Duplicate II
    217. Contains Duplicate
    Java编程思想 4th 第4章 控制执行流程
  • 原文地址:https://www.cnblogs.com/gxcstyle/p/6868876.html
Copyright © 2011-2022 走看看