2

OpenGLでn面プリズムを計算して描画するためのコードはありますか?それは次のように機能するはずです

void DrawPrism(long sides) {

 glNormal3f( ...);
 glTexCoord2f(..);
 glVertex3f(...);
 [...]

}


DrawPrism(5)

ここに画像の説明を入力してください

基本的に必要なのは、ベースのエッジのx--y--位置だけです。残りの計算はGLによって行われます。

4

2 に答える 2

5

新しい答え:

五角形の頂点の座標を計算するには、ここで作成したビデオをチェックしてください: 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

于 2013-02-26T16:03:47.680 に答える
1

いいえ、Glutでも作成する機能はありません。残念ながら、手動で作成する必要があります。基本的な四角形は、基本的な OpenGL にはありません。GLUT を使用すると、いくつかの機能があります。

http://www.cs.csustan.edu/~rsc/SDSU/Modeling.GLU.GLUT.pdf

しかし、それ以上はありません。

于 2013-02-26T15:04:03.223 に答える