gluSphere() を使用しない OpenGL での球の描画
多くの OpenGL チュートリアルは立方体の描画に焦点を当てており、ユーザーは球を作成するための代替方法を求めています。 gluSphere() は便利な関数ですが、必要に応じて球をカスタマイズおよび変更するには、基礎となる数学を理解することが有益です。
1 つのアプローチは、三角形の面を持つ八面体のような正多面体から始めることです。これらの三角形を再帰的に小さな三角形に分割することで、中心から一定の距離に正規化すると、球に似た点のセットが作成されます。
正規化とは、点間の角度を維持するように点を調整することを指します。基準点からの距離を変えながらそれらを動かします。 2D の例を考えてみましょう:
[距離がラベル付けされた線分の画像]
点 C は、12 単位の距離にある A および B に関して正規化されています。正規化の式は次のとおりです。
function normalize(a, b, length): # Calculate new distances and create new point c return c
指定した参照点と距離を持つ多数の点でこのプロセスを繰り返すことにより、円の円弧上に位置する点を作成します。
3D では、このテクニックを拡張して球体を作成することもできます。 dz コンポーネントを含むように正規化関数を調整すると、球状のボリュームが得られます:
[3D 正規化ポリゴンの画像]
再帰レベルが増加すると、球はより滑らかになります:
[レベル 1 と 3 での膨らんだ八面体の画像]
このテクニックはエプコットの球体の十二面体の形状に似ており、面が外側に膨らみ、より丸い外観を作り出します。
以上がgluSphere() を使用せずに OpenGL で球を作成する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。