說是二次曲面圖,其實從視覺效果上看還是三維圖。通過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 可以引用介面替換變數,其中必須為大寫字母,...