Vector3 構造体
Vector3 構造体
使用例
- 振り子のように揺れるディレクショナル ライトを設定する
- ビュー行列を設定する
3 次元 (3D) 空間のベクトルを記述する。
定義
Visual Basic | Public Structure Vector3 |
C# | public struct Vector3 |
Managed C++ | public __value struct Vector3 |
JScript | 構造体は使えるが、独自に定義することはできない。 |
メンバ テーブル
次のテーブルは、Vector3 オブジェクトによって公開されているメンバの一覧である。左側のタブをクリックし、表示したいメンバの種類を選ぶこと。
フィールド
フィールド | 説明 |
---|---|
X | x 要素。 |
Y | y 要素。 |
Z | z 要素。 |
メソッド
メソッド | 説明 |
---|---|
Add | 2 つの 3D ベクトルを加算する。 |
BaryCentric | 指定した 3D ベクトルを使って、重心座標のポイントを返す。 |
CatmullRom | 指定した 3D ベクトルを使って、Catmull-Rom 補間を実行する。 |
Cross | 2 つの 3D ベクトルの外積を計算する。 |
Dot | 2 つの 3D ベクトルの内積を計算する。 |
Equals | このインスタンスが、指定したオブジェクトに等しいかどうかを示す値を返す。 |
GetHashCode | このインスタンスのハッシュ コードを返す。 |
Hermite | 指定した 3D ベクトルを使って、エルミートのスプライン補間を実行する。 |
Length | 3D ベクトルの長さを返す。 |
LengthSq | 3D ベクトルの長さの 2 乗を返す。 |
Lerp | 2 つの 3D ベクトル間の線形補間を実行する。 |
Maximize | 2 つの 3D ベクトルの最大値で構成される 3D ベクトルを返す。 |
Minimize | 2 つの 3D ベクトルの最小値で構成される 3D ベクトルを返す。 |
Multiply | 3D ベクトルと単数を乗算する。 |
Normalize | 3D ベクトルの正規化したベクトルを返す。 |
op_Addition | |
op_Equality | |
op_Inequality | |
op_Multiply | |
op_Subtraction | |
Project | オブジェクト空間からスクリーン空間にベクトルを射影する。 |
Scale | 3D ベクトルをスケーリングする。 |
Subtract | 2 つの 3D ベクトルを減算する。 |
ToString | このインスタンスの文字列表現を取得する。 |
Transform | 指定された行列により 3D ベクトルをトランスフォームする。 |
TransformCoordinate | 指定された行列により 3D ベクトルをトランスフォームし、その結果を w = 1 に射影する。 |
TransformNormal | 指定された行列により 3D ベクトル法線をトランスフォームする。 |
Unproject | スクリーン空間からオブジェクト空間にベクトルを射影する。 |
Vector3 | オブジェクトの新しいインスタンスを初期化する。 |
プロパティ
プロパティ | 説明 |
---|---|
Empty | 空の 3D ベクトルを返す。 |
使用例
振り子のように揺れるディレクショナル ライトを設定する
この例では、Microsoft® Direct3D® オブジェクトを照らす、振り子のように揺れる色付きのディレクショナル ライトを設定する方法を示す。
ここでは、private の SetUpLights メソッドで Light オブジェクトをインスタンス化している。このオブジェクトの Type プロパティは、LightType 列挙の Directional 定数に設定する。Light.Diffuse プロパティは、システム定義の暗い青緑色に設定する。
Light.Direction プロパティは、照射ライトの向きを指定する Vector3 構造体を受け取る。この構造体に含まれる (x,y,z) フィールドでは、y の値は 1.0 で一定で、x と z は時間と共に変化する。
using Microsoft.DirectX.Direct3D;
Device device = null; // Create rendering device
private void SetupLights() // Method to set up lighting of the object
{
device.RenderState.Lighting = true; // Make sure lighting is enabled
// Set up a dark turquoise-colored directional light, with an oscillating
// direction. Note that many lights may be active at a time (but each one
// slows downthe rendering of the scene). However, here just use one.
Light light = new Light(); // Void constructor
light.Type = LightType.Directional;
light.Diffuse = System.Drawing.Color.DarkTurquoise;
light.Direction = new DirectX.Vector3(
(float)System.Math.Cos(System.Environment.TickCount / 250.0f),
1.0f,
(float)System.Math.Sin(Environment.TickCount / 250.0f));
}
ビュー行列を設定する
この例では、ワールド座標をカメラ空間 (ビュー空間) にトランスフォームするビュー トランスフォーム行列を初期化する方法を示す。
Vector3 構造体のベクトル成分は、左手 (LH) 座標系ビュー行列を作成する LookAtLH メソッドの引数となる。View トランスフォーム行列は、このビュー行列と等しくなるように設定する。
3 つの入力ベクトルが表す内容は、それぞれ次のとおりである。
- 視点。この場合は [0, 3, -5]。
- カメラの注視対象。この場合は、原点座標の [0, 0, 0]。
- 現在のワールドの上方。通常は [0, 1, 0]。
using Microsoft.DirectX.Direct3D;
Device device = null; // Create rendering device
// Set up the view matrix. A view matrix can be defined given an eye point,
// a point to look at, and a direction for which way is up. Here, you set
// the eye five units back along the z-axis and up three units, look at the
// origin, and define "up" to be in the y-direction.
device.Transform.View = Microsoft.DirectX.Matrix.LookAtLH(
new Vector3( 0.0f, 3.0f,-5.0f ),
new Vector3( 0.0f, 0.0f, 0.0f ),
new Vector3( 0.0f, 1.0f, 0.0f ) );
構造体の情報
名前空間 | Microsoft.DirectX |
アセンブリ | Microsoft.DirectX (microsoft.directx.dll) |
厳密名 | Microsoft.DirectX, Version=0293, Culture=neutral, PublicKeyToken=d3231b57b74a1492 |
© 2002 Microsoft Corporation. All rights reserved. Terms of use.