CGと線形代数3(.odp)

Download Report

Transcript CGと線形代数3(.odp)

3DCGにおける線形代数
3
5404025 澄川 知弘
1
斉次座標(利点)
・平行移動を回転や拡大縮小と同じように行列の積で表せる
・透視投影を行列で表せるようになる
2
n次元実射影空間 (P n)
P : 同値関係 「 ~ 」による ( x1 , x 2 , ・・・ , x n1 )
を含む同値類を
[ x1 , x 2 , ・・・ , x n1 ] としたときの同値類全体の集合
n
[ x 1 , x 2 , ・・・ , x n1 ]=
{ y 1 , y 2 , ・・・ y n1 ∣ y 1 , y 2 , ・・・ y n1  ~  x 1 , x 2 , ・・・ x n1  }
3
斉次座標(同次座標)
P の点 [ x 1 , x 2 , ・・・ , x n1 ] に対して
n
 y1 , y 2 , ・・・ , y n1  ∈ [ x 1 , x 2 , ・・・ , x n1 ] となる
 n  1  個の実数の組  y 1 , y 2 , ・・・ , y n1 
4
斉次座標(同次座標)
P の点 [ x 1 , x 2 , ・・・ , x n1 ] に対して
n
 y1 , y 2 , ・・・ , y n1  ∈ [ x 1 , x 2 , ・・・ , x n1 ] となる
 n  1  個の実数の組  y 1 , y 2 , ・・・ , y n1 
ある次元空間における座標を1次元拡張し
て表現したもの
5
ベクトルと行列(変換)
[ 点の座標と位置ベクトルの成分表示を同一視 ]
(x' , y')=f(x , y) において
x'=ax+by , y'=cx+dy
 
a
c
 x ' , y'  =  x y 
b d
6
ベクトルと行列(斉次座標)
[ 点の座標と位置ベクトルの成分表示を同一視 ]
(x' , y')=f(x , y) において
x'=ax+by , y'=cx+dy
 
a b0
 x' , y' , 1  = x y 1  c d 0
0 01
7
回転(原点基点)
[ 点 (x , y,1) を
原点の周りの角度 θ で回転した点 (x' , y',1)]

cos θ sinθ 0
 x ' , y ' , 1  =  x y 1  −sin θ cosθ 0
0
0
1
y

(x',y'
)
θ
(x,y)
x
8
拡大縮小(原点基点)
Ssx,sy ・・・スケーリング定数が sx,sy のスケーリング変換
[ 点 (x , y,1) が Ssx,sy で移された点 (x',y',1)
 
sx 0 0
 x ' , y ' , 1  =  x y 1  0 sy 0
0 0 1
9
座標軸に関する対称変換
直線 L に関する対称変換・・・点 P を L に対して線対称な
点 P' に移す変換
[ 線分 PP' の垂直2等分線が L になるような
点 P’ に P を移す変換 ]
y
P''(-x,y)
P(x,y)
x
0
P'(x,-y)
10
座標軸に関する対称変換
[ 線分 PP' の垂直2等分線が L になるような
点 P’ に P を移す変換 ]
○ x軸に関する対象変換
 
1 0 0
 x ' , y' , 1  =  x y 1  0 −1 0
0 0 1
11
座標軸に関する対称変換
[ 線分 PP' の垂直2等分線が L になるような
点 P’ に P を移す変換 ]
○ y軸に関する対象変換
 
−1 0 0
 x ' , y' , 1  =  x y 1  0 1 0
0 01
12
平行移動
[点を元の場所から与えられた方向へ与えられた距離だけ
移動させる変換]
移動はベクトルで表せる
( 平行移動はすべての点を動かす )
平行移動 T で点 P が点 P' に移すとき
T は
PP' で定まる平行移動
13
平行移動
ベクトル v の定める平行移動 Tv について P'=Tv(P)
とすると

OP ' = 
OP  v , v = t x i  t y j
 i , j : x , y 軸の正方向の単位ベクトル 
P(x,y) , P'(x',y') のとき
x ' = x  t x , y' = y  t y
14
平行移動
[ 点 (x , y,1) を Tv で平行移動した点 (x' , y',1)]
 
1 0 0
 x' , y' , 1  =  x y 1  0 1 0
tx t y 1
15