TOP

その他
Game Development Diary
Undead Syndrome 開発メモ
日々コレどうしよう2016年以降版



ブラウザゲーム
発火少年の地面焦がし
MAGICAL METEOR SHOWER

メタセコイア備忘録
東日本大震災(Aftermath of the 2011 Tohoku earthquake and tsunami)

ムカゴソフトウェア開発
e-mail:cqp00202@nifty.ne.jp

ベクトルの長さと単位ベクトル
ベクトルの長さ
ベクトルの長さは、x成分、y成分、z成分を2乗して、それらを足し合わせた値の平方根を取ることで求められる。

Vector3 vecA = new Vector3(2f, 3f, 4f);
//=============================================================
//■ベクトルの長さを求める
//=============================================================
float lengthA = (float)Math.Sqrt((vecA.X * vecA.X)
+ (vecA.Y * vecA.Y)
+ (vecA.Z * vecA.Z));
//■スプライトフォントで描画
spriteBatch.DrawString(font
, lengthA.ToString("F4")
, new Vector2(100f, 100f)
, new Color(Color.White.ToVector4()));
//=============================================================
//■答え合わせ
//=============================================================
lengthA = vecA.Length(); //長さ;
//■スプライトフォントで描画
spriteBatch.DrawString(font
, lengthA.ToString("F4")
, new Vector2(100f, 130f)
, new Color(Color.White.ToVector4()));
Vector3.Length メソッド
実行結果
5.3852
5.3852
単位ベクトル
ベクトルを正規化するには、まずベクトルの長さを求めてから、x成分、y成分、z成分に、1/ベクトルの長さを掛け合わせる。

Vector3 vecA = new Vector3(2f, 3f, 4f);
//=============================================================
//■ベクトルの長さを求める
//=============================================================
float lengthA = (float)Math.Sqrt((vecA.X * vecA.X)
+ (vecA.Y * vecA.Y)
+ (vecA.Z * vecA.Z));
//=============================================================
//■単位ベクトルを求める
//=============================================================
Vector3 unit_vecA = vecA * (1 / lengthA);
//■スプライトフォントで描画
spriteBatch.DrawString(font
, unit_vecA.ToString()
, new Vector2(100f, 100f)
, new Color(Color.White.ToVector4()));
//=============================================================
//■答え合わせ
//=============================================================
vecA.Normalize(); //正規化;
//■スプライトフォントで描画
spriteBatch.DrawString(font
, vecA.ToString()
, new Vector2(100f, 130f)
, new Color(Color.White.ToVector4()));
Vector3.Normalize メソッド
実行結果



