【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        --扇形轉過的角度
);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM