2014-05-24 92 views
1

如何創建如此的圓柱體?如何在OpenGL中設置(創建)切片圓柱體

http://www.eicac.co.uk/Images/SLICED-CYLINDER.png

我猜gluCylinder是不是一種選擇?

+3

'gluCylinder()'將無法創建那種圓柱體。您必須生成頂點來描述形狀。一些基本的幾何不難。我認爲你應該自己嘗試這樣做,並讓我們知道你是否遇到困難。 :) –

+0

我非常肯定的是***不是***缸,兩端不是垂直於革命軸。如果您導出頂部圓柱形截面的平面方程,並使用該方程計算頂點的高度,您最終必須計算自己,那麼可以生成該平面。 –

回答

1

與一個色帶和兩個風扇創建它

讓我們假設該點[0, 0, 0]是在該形狀的底部和Z軸的中心向上。使用圖像中的常量。

bottom cap

一個簡單的光盤。

glBegin(GL_TRIANGLE_FAN) 
glVertex3d(0.0, 0.0, 0.0) // center 
for angle from 0 to π (whatever step) 
    double x = 0.5 * D * cos(angle); 
    double y = 0.5 * D * sin(angle); 
    glVertex3d(x, y, 0.0); 
glEnd(); 

側壁

我們需要計算實際斜率功能。 這將是y = a * x + b的形式,並有點(0.0, H)(0.5*D, H2)

因此,我們必須解決的ab。我們有b = Ha = (H2 - H)/0.5 * D

double a = (H2 - H)/0.5 * D; 
double b = H; 

glBegin(GL_TRIANGLE_STRIP) 
for angle from 0 to π (whatever step) 
    double x = 0.5 * D * cos(angle); 
    double y = 0.5 * D * sin(angle); 
    double height = a * x + b; 
    glVertex3d(x, y, 0.0); 
    glVertex3d(x, y, height); 
glEnd(); 

頂蓋

我們結合前面的步驟和密封頂部。

double a = (H2 - H)/0.5 * D; 
double b = H; 

glBegin(GL_TRIANGLE_FAN) 
glVertex3d(0.0, 0.0, H) // center 
for angle from 0 to π (whatever step) 
    double x = 0.5 * D * cos(angle); 
    double y = 0.5 * D * sin(angle); 
    double height = a * x + b; 
    glVertex3d(x, y, height); 
glEnd(); 
相關問題