質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%

Q&A

解決済

1回答

3690閲覧

ベクトルを正規化する意味はなんですか?

blendegg

総合スコア81

0グッド

0クリップ

投稿2022/04/09 01:11

vector x = 10,y = 10だった場合、その地点までの距離は14.1421356237ですね。
14.1421356237を1とすることを正規化すると言いますが、何に使用するのか良くわかりません。

プログラムっぽく書くとこんな感じでしょうか。
vector2(10,10).normalized() = vector2(100,100);

こうすることに何の意味があるんでしょうか?

ゲームのロジックで考えてみました。
主人公を敵キャラクターが追跡してくる。主人公の1以内にまで近づいたら、敵キャラクターは追跡を停止するというロジック。

距離が1未満になった場合、追跡をやめるというロジックをプログラムっぽく書くとこんな感じでしょうか?

#もしキャラ間の距離が、1を下回ったら
if(distance_of_enemy_and_charater < 1){
停止処理
}

14.1421356237という部分はベクトルによって可変するから、1に統一するという感じでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hoshi-takanori

2022/04/09 01:36

敵キャラが主人公に一定の速度でまっすぐ向かってくる場合、主人公の位置から敵からの位置を引いて正規化したベクトルに速度を掛ければ、どんな向きでも速度が一定になります。
blendegg

2022/04/09 04:54

なるほど、正規化しないと速度に影響してしまうということですね。 たしかに1フレームあたり移動させる数値に、14.1421356237などを使ったら、距離が遠いほど速度が出るということになりますね。 理解しました。 ありがとうございました。
guest

回答1

0

ベストアンサー

正規化する、というのは、長さを1にすることであり、長さを無視する、とも言えます。
ですが、その目的は、様々でしょう。

「ゲーム開発」のタグが付いているので、その分野でのベクトルを使う用途は、「位置」か「向き」かを表す場合に使用されると思います。

「位置」はともかくとして、「向き」の場合、同じ向きを表していても長さが違う、更に言えば各要素の数値が違うことがあります。
数値が違えば、その後の計算結果も違ってきます。
だから、一旦長さを正規化(1)にして、統一化して、以降の計算で違いが出ないようにする、というのが用途の一つです。

例えば、2つのベクトルの角度を求める場合、それぞれのベクトルの長さがいくつであろうが、向きが一緒であれば結果は同じはずです。
Unityの場合であれば、(Vector3.Angleというメソッドがありますがそれを使わず、という条件で)以下のように求められます。

cs

1 float GetAngle(Vector3 v1, Vector3 v2) 2 { 3 Vector3 n1 = v1.normalized; // v1を単位ベクトル化 4 Vector3 n2 = v2.normalized; // v2を単位ベクトル化 5 return Mathf.Rad2Deg * Matfh.Acos(Vector3.Dot(n1, n2)); 6 }

(実際、角度(を求めるためのコサイン値)の求め方を調べると、「内積÷(v1の長さ×v2の長さ)」という式が出てくると思いますが、正規化したベクトルであれば長さは1なので、今回は回答の内容に合わせる形で書きました)

投稿2022/04/09 11:02

編集2022/04/09 11:30
katsuko

総合スコア3578

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問