• 数学的魅力 之 正多边形


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

  • 相关阅读:
    解决winXP无法远程桌面连到win8
    Exception处理
    Java父类与子类的内存引用讲解
    JAVA子类继承父类
    JAVA子类调用父类构造方法
    JS 矩阵转置
    JS 二分查找
    JS冒泡排序
    JS 求平均值
    关于STM32 NVIC配置的解释
  • 原文地址:https://www.cnblogs.com/gxcstyle/p/6868876.html
Copyright © 2020-2023  润新知