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

  • 相关阅读:
    带宽利用率提升50%,腾讯云联网架构方案解析
    重构实践:基于腾讯云Elasticsearch搭建QQ邮箱全文检索
    存算分离下写性能提升10倍以上,EMR Spark引擎是如何做到的?
    秒级去重:ClickHouse在腾讯海量游戏营销活动分析中的应用
    降本提效,贝壳搜索推荐架构统一之路
    亿级用户,腾讯看点信息流推荐系统的架构挑战
    优秀程序员,如何提高架构能力?
    如何创建体元栅格?
    导出属性表字段结构
    去除镶嵌数据集中影像的黑边或白边
  • 原文地址:https://www.cnblogs.com/nonkicat/p/2987125.html
Copyright © 2011-2022 走看看