zoukankan      html  css  js  c++  java
  • 【OpenGL】二次曲面图

    说是二次曲面图,其实从视觉效果上看还是三维图。通过glu实用库,我们可以轻松的画出球形、锥形、扇面、圆柱形,而不用像画立方体或立体三角形一样一个面一个面的去画。

    要画二次曲面图形,首先我们要创建一个GLUquadricObj(二次曲面声明类型)。

    具体如下:

    //声明对象
    GLUquadricObj	*uquadric;
    //初始化二次曲面并创建一个指向二次曲面的指针
    uquadric = gluNewQuadric();
    //在二次曲面的表面创建平滑的法向量
    gluQuadricNormals(uquadric,GL_SMOOTH);
    //允许二次曲面使用纹理
    gluQuadricTexture(uquadric,TRUE);
    

    创建完二次曲面声明并初始化之后,我们就可以利用这个指针绘制多个曲面图形了。

    圆柱形

     void gluCylinder( GLUquadric* quad,    --创建的二次曲面指针
        GLdouble base,                                 --底面圆形的半径
        GLdouble top,                                   --顶面圆形的半径
        GLdouble height,                               --圆锥的高度
        GLint slices,                                      --纬线 环绕z轴的细分面(数字越大越平滑,相应的速度越慢)
        GLint stacks )                                    --经线 沿着z轴的细分面(数字越大越平滑,相应的速度越慢)

    圆锥

    圆锥的实现函数和圆柱体是一样的,只要将顶面圆形的半径设为0就可以了。

    圆面

    void gluDisk(
        GLUquadricObj *qobj,      --创建的二次曲面指针
        GLdouble innerRadius,     --内圆的半径
        GLdouble outerRadius,     --外圆的半径
        GLint slices,              --沿半径的细切面(数字越大越平滑,相应的速度越慢)
        GLint loops              --绕圆心的细切面(数字越大越平滑,相应的速度越慢)
    );

    球体

    void gluSphere(
        GLUquadricObj *qobj,    --创建的二次曲面指针
        GLdouble radius,        --球半径
        GLint slices,            --纬线细分面(数字越大越平滑,相应的速度越慢)
        GLint stacks            --经线细分面(数字越大越平滑,相应的速度越慢)
    );

    扇形

    void gluPartialDisk(
        GLUquadricObj *qobj,        --创建的二次曲面指针
        GLdouble innerRadius,       --内圆的半径
        GLdouble outerRadius,       --外圆的半径
        GLint slices,                --沿半径的细切面(数字越大越平滑,相应的速度越慢)
        GLint loops                --绕圆心的细切面(数字越大越平滑,相应的速度越慢)
        GLdouble startAngle,         --扇形开始的角度
        GLdouble sweepAngle        --扇形转过的角度
    );

  • 相关阅读:
    磁盘分区异常占用满了
    平滑升级nginx
    supervisor进程异常挂掉
    datetime值毫秒四舍五入
    docker+tomcat 启动时非常慢原因之JRE /dev/random阻塞
    Tomcat最大连接数问题
    Docker:设置代理proxy
    easy_install和pip安装python库修改默认的源
    zabbix监控mysql之Warning: Using a password on the command line interface can be insecure.
    Mysql忘记密码解决方法
  • 原文地址:https://www.cnblogs.com/nonkicat/p/2987125.html
Copyright © 2011-2022 走看看