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        --扇形转过的角度
    );

  • 相关阅读:
    完整安装always on 集群——转自菜鸟就是我
    markdown文件的基本常用编写语法-转自凌云之翼
    python基础学习DAY5——转自金角大王
    python基础学习DAY4——转自金角大王
    python函数返回局部变量,局部&全局变量同名问题
    python2.7和python3.6共存,使用pip安装第三方库
    理解if __name__ == '__main__':
    pycharm中查看快速帮助和python官方帮助文档
    python第三方库PIL安装的各种坑
    python2.7安装第三方库错误:UnicodeDecodeError: 'ascii' codec can't decode byte 0xcb in position 0
  • 原文地址:https://www.cnblogs.com/nonkicat/p/2987125.html
Copyright © 2011-2022 走看看