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的值越大的时候,显示的圆形越圆。

  • 相关阅读:
    TreeView拖动
    反射机制
    SQLServer2005/2008 XML数据类型操作
    开发与研发:一字之差的感想
    设置在64位机器上的IIS(IIS6/IIS7)兼容32位程序(64位ODBC和32位ODBC的问题同样适用)
    setTimeout和setInterval的使用
    Oracle 安装/使用、配置/卸载
    链接sql数据库以及Oracle 数据库和启动缓存以及停止缓存
    jQuery学习笔记—— .html(),.text()和.val()的使用
    C# List<T>用法
  • 原文地址:https://www.cnblogs.com/gxcstyle/p/6868876.html
Copyright © 2011-2022 走看看