OpenGLでn面プリズムを計算して描画するためのコードはありますか?それは次のように機能するはずです
void DrawPrism(long sides) {
glNormal3f( ...);
glTexCoord2f(..);
glVertex3f(...);
[...]
}
DrawPrism(5)
基本的に必要なのは、ベースのエッジのx--y--位置だけです。残りの計算はGLによって行われます。
新しい答え:
五角形の頂点の座標を計算するには、ここで作成したビデオをチェックしてください: http ://www.youtube.com/watch?v=qqu6LknbQsg
五角形の高さを計算するための方程式は次のとおりです。
^ WolframAlphaから取得
ケノービによる塗りつぶし:上のビデオで説明されているように、A、B、C、D、Eは国防総省の端です。F、G、H、I、Jは、一緒にプリズムを形成する2番目の五角形です。サインとコスは度で測定されます。次に、次の頂点があります。
Ax = 0 ; Ay = h/2, ; Az = -1;
Bx = s/2 + s * sin(18) ; By = -h/2 + s*cos(18) ; Bz = -1;
Cx = s/2 ; Cy = -h/2 ; Cz = -1;
Dx = -s/2 ; Dy = -h/2 ; Dz = -1;
Ex = -s/2 - s * sin(18); Ey = -h/2 + s*cos(18) ; Ez = -1;
Fx = 0 ; Fy = h/2, ; Fz = 1;
Gx = s/2 + s * sin(18) ; Gy = -h/2 + s*cos(18) ; Gz = 1;
Hx = s/2 ; Hy = -h/2 ; Hz = 1;
Ix = -s/2 ; Iy = -h/2 ; Iz = 1;
Jx = -s/2 - s * sin(18); Jy = -h/2 + s*cos(18) ; Jz = 1;
そして、あなたは単にします
glVertex3f(Ax,Ay,Az);
glVertex3f(Bx,By,Bz);
[...]
編集:以下の以前の回答(*五角形だけでなく、すべてのポリゴンに対して):
これは、2D n-gonを生成する方法について私が作成したビデオです...任意の3D形状(n-hedron)を生成するには、数学的な「ネット」(スケルトン構造)を使用してこれらの異なるn-gonで構成できます。)の3Dオブジェクトの角度を計算します(これらの式はすべて、n-ヘドロン内角式またはn-ヘドロン_____を検索することで見つけることができます)または、これらのn-多角形を描いたのと同じ方法で描くことができます(ビデオ)シェーディングをシミュレートするために異なる色の線を使用するだけです(ただし、3D空間でそれらを回転させる必要があります。これは、c++で実行できるので問題ありません。
とにかく、ここに私のビデオがあります:http ://www.youtube.com/watch?v=CWbTKm3a5Fw
そして、これは、あなたが疑問に思っていた場合に備えて、Geometrical-netが(前述のように)何であるかです:
この記事では、面のnヘドロン内角などの計算に使用される数学を示しますが、非常に役立つ可能性があります:http ://www.kjmaclean.com/Geometry/IcosaDodeca.html
いいえ、Glutでも作成する機能はありません。残念ながら、手動で作成する必要があります。基本的な四角形は、基本的な OpenGL にはありません。GLUT を使用すると、いくつかの機能があります。
http://www.cs.csustan.edu/~rsc/SDSU/Modeling.GLU.GLUT.pdf
しかし、それ以上はありません。