ベクトル解析​/ベクトル

Unity学習帳2冊目ベクトル解析 / ベクトル

ベクトル表記 anchor.png

当サイトでベクトルの表記はベクトル解析で扱われる数学記号の慣習に沿うものとする
ベクトルは太文字で表す

\(\mathbf{r}=\left( \begin{matrix} x \\ y \\ z \end{matrix} \right) \)

右に並んだ三つ揃いの数をベクトルの成分(component)、または要素(element)と呼ぶ
たとえば3番目の数をベクトル \(\mathbf{r}\) のz成分と呼んだりする

添え字表現では \({\mathbf {r} }_{ 0 }=\left( \begin{matrix} { x }_{ 0 } \\ { y }_{ 0 } \\ { z }_{ 0 } \end{matrix} \right) \quad ,\quad {\mathbf { r} }_{ 1 }=\left( \begin{matrix} { x }_{ 1 } \\ { y }_{ 1 } \\ { z }_{ 1 } \end{matrix} \right) \quad ,\quad {\mathbf { r }}_{ 2 }=\left( \begin{matrix} { x }_{ 2 } \\ { y }_{ 2 } \\ { z }_{ 2 } \end{matrix} \right) \) となる

点Oから点Pまでのベクトルを\(\overrightarrow { OP } \)と表し距離を\(\left| \overrightarrow { OP } \right| \)と表す。等号を使って\(\overrightarrow { OP } = \mathbf{ r }_{ p }\)(Pへ向かうベクトル)と表す事も出来る

<unityコード例>

Everything is expanded.Everything is shortened.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
 
 
 
 
 
 
 
 
 
 
 
                Vector3 r0 = Vector3.zero;
                Vector3 r1 = new Vector3 (1f, 2f, 3f);
                Vector3 r2;
                r2.x = 4f;
                r2.y = 5f;
                r2.z = 6f;
 
                Vector3 o = Vector3.zero;
                Vector3 p = Vector3.up;
 
                Vector3 rp = p - o;
Page Top

ベクトルの大きさと方向 anchor.png

通常、ベクトルは大きさと方向を表す。その他にも位置を表す為にベクトルを利用したり、長さを1として方向を表すベクトルとして扱うことも出来る

ベクトルの長さは「高校数学​/三平方の定理」の原理により成分の二乗の和の平方根\(\sqrt { { x }^{ 2 }+y^{ 2 }{ +z }^{ 2 } } \)で計算できる

\(r=\left| \mathbf{r} \right| = \sqrt { { x }^{ 2 }+y^{ 2 }{ +z }^{ 2 } } \)

これをベクトルの大きさ絶対値と呼び\(\left| \mathbf{r} \right|\)と書いたり、単にrと表す
(rは細字になっていることに留意。これはベクトルではない。量を表すスカラーになっている)
長さを1とした方向を表すベクトルを「正規化(normalized)されたベクトル」。単位ベクトルと呼ぶ。長さを1にするとはどういったものであるか?
それは位置ベクトル\(\mathbf{r}\)を大きさrで割ったものになる。この単位ベクトルを\(\mathbf{e}\)とした時、

式は \(\mathbf{e}=\frac{\mathbf{r}}{r}=\frac{\mathbf{r}}{\left| \mathbf{r} \right|}=\left( \begin{matrix} \frac { x }{ \sqrt { { x }^{ 2 }+y^{ 2 }+{ z }^{ 2 } } } \\ \frac { y }{ \sqrt { { x }^{ 2 }+y^{ 2 }+{ z }^{ 2 } } } \\ \frac { z }{ \sqrt { { x }^{ 2 }+y^{ 2 }+{ z }^{ 2 } } } \end{matrix} \right) \) となる

単位ベクトル\(\mathbf{e}\)は\(\mathbf{r}\)から長さの情報を無くしたものなので純粋にベクトル\(\mathbf{r}\)の方向を表したものとなる
この大きさrと方向\(\mathbf{e}\)を掛け合わせると再び元のベクトル\(\mathbf{r}\)に復元できる。非常に当たり前のことだがこのような考え方をするのが大事

Everything is expanded.Everything is shortened.
1
2
3
4
5
 
 
 
 
 
                Vector3 R = new Vector3 (1, 2, 3);
                float r = R.magnitude;
                Vector3 e = R.normalized;
                print ("ベクトル" + R + "長さ" + r + "単位ベクトル" + e);
                print ("元のベクトルへ復元もできる" + e * r);

出力:
ベクトル(1.0, 2.0, 3.0)長さ3.741657単位ベクトル(0.3, 0.5, 0.8)
元のベクトルへ復元もできる(1.0, 2.0, 3.0)


unityではこれらの計算を簡単に求める関数があらかじめ標準で準備されているのでこれを利用すると良い
(ただしこの計算方法は重要な基本的な事柄なので絶対に憶えておく必要がある。最低限、筆算は出来るようにして置く事)

Page Top

単位ベクトル anchor.png

単位ベクトルの中でもx,y,z軸方向に向いたものは特に重要でこれは下記のように表せる

\({ \mathbf{e} }_{ x }=\left( \begin{matrix} 1 \\ 0 \\ 0 \end{matrix} \right) \quad ,\quad { \mathbf{e} }_{ y }=\left( \begin{matrix} 0 \\ 1 \\ 0 \end{matrix} \right) \quad ,\quad {\mathbf{e}}_{ z }=\left( \begin{matrix} 0 \\ 0 \\ 1 \end{matrix} \right) \)

Everything is expanded.Everything is shortened.
1
2
3
 
 
 
                Vector3 ex = Vector3.right;
                Vector3 ey = Vector3.up;
                Vector3 ez = Vector3.forward;


添付ファイル:

トップ   差分 バックアップ 複製 名前変更 リロード   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom
Last-modified: 2015-03-30 (月) 01:23:14 (JST) (3321d) by osinko