OPENGL 学習プロジェクト -- 立体正方形のリアルタイム 3D モデル

マウスに追従して視野角を切り替えたり、動的ブランキングを実行したりできる立方体を実現することは、2次元での3次元の3次元形状の実現をより良く実現するのに役立ちます。

このシステムには主に、2 次元平面での 3 次元グラフィックスの描画、グラフィックスの回転、グラフィックスの移動、グラフィックスのスケーリング、およびブランキング グラフィックスのアルゴリズムが含まれます。

1.立方体の立体表現

まず頂点にラベルを付け、頂点の xyz 座標配列を設定することで各頂点の座標に対応させます。

             x[8] = { a+o, a+o, 0+o, 0+o, a+o, a+o, 0+o, 0+o };

             y[8] = { 0+o, a+o, a+o, 0+o, 0+o, a+o, a+o, 0+o };

             z[8] = { a+o, a+o, a+o, a+o, 0+o, 0+o, 0+o, 0+o };

(+oの理由は後述します)

 点平面マトリックスを通じて、同じ平面のすべての点を集めて行列に入れ、6 つの平面にシリアル番号のラベルを付けます。

            f[6] = { 0,1,2,3,4,5 }; //面番号

    fp[6][5] = { {0,1,2,3,0},{1,0,4,5,1},{4,0,3,7,4},{2,1, 5,6,2},  {6,7,3,2,6},{6,5,4,7,6} }; //面の頂点の順序

2. グラフィックの回転

 MouseDownマウス トリガー イベントを使用してグラフィックの回転をトリガーすると、マウスがアクティブになり、カメラは以下を使用して座標と角度を変換できます。

        glRotatef(xrot, 1.0f, 0.0f, 0.0f);

        glRotatef(1.0f, y rot, 0.0f, 0.0f); //オブジェクトの回転方法を設定します。パラメータは回転角度です。  

この関数は回転角度を取得します。

3. グラフィック翻訳

        x[8] = { a+o, a+o, 0+o, 0+o, a+o, a+o, 0+o, 0+o };

座標を最初に初期化するときは、「変更可能な変数 o」を使用して配列に値を割り当て、キーボード イベントがトリガーされたときに o の値を変更し、画像を再描画して初期の座標変換の画像を取得します。画像の翻訳が完了しました。

4. グラフィックスのスケーリング

        x[8] = { a+o, a+o, 0+o, 0+o, a+o, a+o, 0+o, 0+o };

座標を最初に初期化するときは、変更可能な変数 a を使用して配列に値を割り当て、キーボード イベントがトリガーされたときに a の値を変更し、画像を再描画して拡大/縮小画像を取得します。つまり、画像が完成しました。

5.グラフィックスのリアルタイム動的ブランキング

授業で学んだことに基づいて、次のようにします。

(1) 背面は常に見えません。

(2) 背面による遮蔽だけが原因で他のエッジが見えなくなることはありません。

(3) これらの背面はすべて、ブランキング結果に影響を与えることなく除去できます。

現在の視野角での正方形の視点ベクトル S と立方体の各面の法線ベクトル (V) を計算します。

① V・S<0 の場合、その多角形を正面と呼びます。② V・S>0 の場合、その多角形を背面と呼びます。

おすすめ

転載: blog.csdn.net/qq_52913088/article/details/122569923