ホームに戻る
 3Dの数値計算に関する覚え書き

1、基本計算

距離

|距離|=(x^2+y^2+z^2)^(1/2)

内積(θは a と b のなす角度)

a・b=ax*bx+ay*by+az*bz=|a|*|b|*cosθ

外積(θは a と b のなす角度。c は a と b と共に垂直なるベクトル。)

a×b = |a||b|sinθ*c

cx=ay*bz-az*by
cy=az*bx-ax*bz
cz=ax*by-ay*bx

行列の計算

                         | a e i m |
|x' y' z' 1| = |x y z 1|*| b f j n |
                         | c g k o |
                         | d h l p |

x'=x*a+y*b+z*c+1*d
y'=x*e+y*f+z*g+1*h
z'=x*i+y*j+z*k+1*l
w'=x*m+y*n+z*o+1*p

2、基本変換

X軸回転
                          | 1     0    0  0 |
|x' y' z' 1'| = |x y z 1|*| 0  cosX sinX  0 |
                          | 0 -sinX cosX  0 |
                          | 0     0    0  1 |
Y軸回転
                          | cosY 0 -sinY  0 |
|x' y' z' 1'| = |x y z 1|*|    0 1     0  0 |
                          | sinY 0  cosY  0 |
                          |    0 0     0  1 |
Z軸回転
                          |  cosZ sinZ 0 0 |
|x' y' z' 1'| = |x y z 1|*| -sinZ cosZ 0 0 |
                          |     0    0 1 0 |
                          |     0    0 0 1 |
拡大縮小
                          | sX  0  0 0 |
|x' y' z' 1'| = |x y z 1|*|  0 sY  0 0 |
                          |  0  0 sZ 0 |
                          |  0  0  0 1 |
平行移動
                          |  1  0  0 0 |
|x' y' z' 1'| = |x y z 1|*|  0  1  0 0 |
                          |  0  0  1 0 |
                          | dx dy dz 1 |

3、空間での変換

オブジェクト変換行列

|オブジェクト変換行列|=|単位行列|*|回転|*|拡大|*|移動|

カメラ変換行列(カメラが右に動けば実際は左に。そのため - がつく。)

|カメラ変換行列|=|単位行列|*|-移動|*|-拡大|*|-回転|

変換行列を用いた変換

|変換後オブジェクト|=|変換前オブジェクト|*|オブジェクト変換行列|*|カメラ変換行列|

4、陰面消去法(見えない面は描画しない。)

視線ベクトルvと法線ベクトルnの成す角をθとして、cosθ>0の時見える。

すなわち、

  v・n
 ------ > 0 の時見える。
 |v||n|

すなわち、

 v・n > 0 の時見える

inserted by FC2 system