Platform SDK: DirectX

ステップ 1.2 : 円錐を準備する

[C++]

ここでは、Visual Basic でのアプリケーション開発について説明する。C++ については、「Direct3D 直接モードの C/C++ チュートリアル」を参照すること。

[Visual Basic]

円錐のジオメトリは、位置ベクトルと法線ベクトルを宣言するだけで準備できる。サンプル DrawPrims では、次のプログラマ定義型によって円錐オブジェクトを定義する。

Private Type MyFlexibleVertex
vPosition As D3DVECTOR
vNormal As D3DVECTOR
End Type

円錐の先端は、次のコードで定義できる。

Dim vectorNorm As D3DVECTOR
    
g_vCone(0).vPosition = MakeVector(0, CONE_HEIGHT / 2, 0)
        
vectorNorm = MakeVector(0, 1, 0)
Call g_dx.vectorNormalize(vectorNorm)
g_vCone(0).vNormal = vectorNorm

円錐の各面は、次の三角関数で計算できる。

For i = 0 To NUM_CONE_SIDES - 1
x = Sin(2 * pi * i / (NUM_CONE_SIDES - 1))
y = -CONE_HEIGHT / 2
z = Cos(2 * pi * i / (NUM_CONE_SIDES - 1))
        
g_vCone(i + 1).vPosition = MakeVector(x * CONE_RADIUS, y * CONE_RADIUS, z * CONE_RADIUS)

円錐の各面の位置ベクトルは、次のコードで計算できる。

vectorNorm = MakeVector(x, 0.5, z)
Call g_dx.vectorNormalize(vectorNorm)
g_vCone(i + 1).vNormal = vectorNorm
Next i

ジオメトリ空間で壁セグメントと円錐を定義したら、立方体の準備に進むことができる。この処理については、「ステップ 1.3 : 立方体を準備する」で説明する。