Opengl二次曲面

2021-07-03 21:39:10 字數 2347 閱讀 5118

說是二次曲面圖,其實從視覺效果上看還是三維圖。通過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              --繞圓心的細切面(數字越大越平滑,相應的速度越慢)

(gluquadricobj *qobj,    --建立的二次曲面指標

gldouble radius,        --球半徑

glint slices,            --緯線細分面(數字越大越平滑,相應的速度越慢)

glint stacks            --經線細分面(數字越大越平滑,相應的速度越慢)

gluquadricobj *qobj,        --建立的二次曲面指標

gldouble innerradius,       --內圓的半徑

gldouble outerradius,       --外圓的半徑

glint slices,                --沿半徑的細切面(數字越大越平滑,相應的速度越慢)

glint loops                --繞圓心的細切面(數字越大越平滑,相應的速度越慢)

gldouble startangle,         --扇形開始的角度

gldouble sweepangle        --扇形轉過的角度

OpenGL從1 0開始 繪製二次曲面

glutwiresphere r,nlongitudes,nlatitudes 球面線框圖,引數分別為半徑,經緯度數目 glutsolidsphere r,nlongitudes,nlatitudes 球面實體圖 glutwirecone rbase,height,nlongitudes,nlati...

vtkQuadric建立二次曲面

在本例項中,我們將用到vtkquadric vtksamplefunction vtkcontourfilter三個類,分別是二次曲面函式 函式曲面抽樣和等高濾波。vtkquadric負責二次曲面基本引數的設定,vtksamplefunction則是對二次曲面進行等間隔逐點取樣,在本例中取樣點數為5...

tipask二次開發總結 tipask二次開發總結

條件模板 statement1 statement2 statement3 不帶下標變數的陣列迴圈 statement php的迴圈輸入 foreach array as value statement foreach array as key value 可以引用介面替換變數,其中必須為大寫字母,...