座標変換

座標変換とは

座標変換とは、任意のベクトルを、その長さを変えないように移す変換のことです。
座標変換によって変換された 2 つのベクトルの内積は、 変換される前と同じ値になります。
座標変換は、2点間の距離を不変にする変換である
座標変換は、ワールド座標とローカル座標間の座標変換や、 ワールド座標を視点座標に変換する場合などに使われます。

ワールド座標とローカル座標

ワールド座標系
3次元空間全体の位置を定義する座標
ローカル座標系
各オブジェクトを定義する座標

2 次元の座標変換

平行移動

点 (x, y) を (tx, ty) だけ平行移動すると (x + tx, y + yt) になります。
ベクトルであらわすと、 OP = (x, y) v = (tx, ty) として、 OP' = OP + v
これは、座標を -v だけ移動したのと同じです。

回転

ある点を原点を中心としてΘだけ回転するということは、 座標を原点中心に-Θだけ回転するということです。

拡大・縮小

ある点を原点を中心としてX方向にaだけ拡大するということは、 座標のX方向を原点中心に1/aだけ拡大するということです。

せん断

斉次座標

2 次元の座標に 1 次元追加して、 3 次元の座標で表すようにすると、 平行移動を含めたすべての座標変換を行列で表すことができます。
2次元の点(x,y)は、斉次座標によって(x,y,1)と表すことができます。

平行移動を表す行列
1  0  0
0  1  0
tx ty 1
回転を表す行列
cosΘ  sinΘ  0
-sinΘ cosΘ  0
0      0      1
拡大・縮小を表す行列
sx 0  0
0  sy 0
0  0  1

3 次元の座標変換

平行移動

点 (x, y, z) を (tx, ty, tz) だけ平行移動すると (x + tx, y + yt, z + tz) になります。
ベクトルであらわすと、
OP = (x, y, z)
v = (tx, ty, tz)
として、
OP' = OP + v
これは、座標を -v だけ移動したのと同じです。

回転

X 軸まわりの回転
1  0      0
0  cosΘ  sinΘ
0  -sinΘ cosΘ
Y 軸まわりの回転
cosΘ  0  -sinΘ
0      1  0
sinΘ  0  cosΘ
Z 軸まわりの回転
cosΘ  sinΘ  0
-sinΘ cosΘ  0
0      0      1

拡大・縮小

sx 0  0
0  sy 0
0  0  sz

斉次座標

3次元空間中のある点(x,y,z)は、 斉次座標で(x,y,z,1)と表されます。
これによって、すべての座標変換が行列の積であらされるようになります。

平行移動を表す行列
1  0  0  0
0  1  0  0
0  0  1  0
tx ty tz 1
回転を表す行列
X 軸まわりの回転
1  0      0      0
0  cosΘ  sinΘ  0
0  -sinΘ cosΘ  0
0  0      0      1
Y 軸まわりの回転
cosΘ  0  -sinΘ  0
0      1  0       0
sinΘ  0  cosΘ   0
0      0  0       1
Z 軸まわりの回転
cosΘ  sinΘ  0  0
-sinΘ cosΘ  0  0
0      0      1  0
0      0      0  1
拡大・縮小を表す行列
sx 0  0  0
0  sy 0  0
0  0  sz 0
0  0  0  1

参考


Prev
Home | Contents
Mail