第5章 CG で使われる変換

はじめに
CG で使われる変換の種類
幾何変換
投影変換
. . . . . . . . . .
OpenGL における変換
ティーポットを描く
まとめ
参考文献
.
.
.
.
..
.
第 5 章 CG で使われる変換
畔上 秀幸
名古屋大学 情報科学研究科 複雑系科学専攻
May 8, 2012
.
.
.
.
.
.
1 / 37
はじめに
CG で使われる変換の種類
幾何変換
投影変換
. . . . . . . . . .
OpenGL における変換
ティーポットを描く
まとめ
参考文献
§5.1 はじめに
(目標) CG で使われる幾何変換,投影変換,視野変換の理論と
OpenGL を用いた変換方法について理解する.
.
.
.
.
.
.
2 / 37
はじめに
CG で使われる変換の種類
幾何変換
投影変換
. . . . . . . . . .
OpenGL における変換
ティーポットを描く
まとめ
参考文献
§5.2 CG で使われる変換の種類
CG で使われる変換には次の種類がある.
幾何変換 3 次元形状モデルの定義された局所座標系を平行移動,回
転移動,拡大・縮小変形を行う変換(座標変換は幾何変換
の逆向き)を幾何変換 (geometric transformation) という.
⇒ 異なる座標系でモデリングされたパーツを全体座標
系で組み合わせるあるいは分解する際に幾何変換が使わ
れる.
投影変換 3 次元形状モデルをディスプレイや印刷面の 2 次元面に投
影する変換を投影変換 (projective transformation) という.
⇒ モデリングされた形状をディスプレイに表示した
り,プリンタで印刷する際に投影変換が使われる.
視野変換 視点の位置あるいは投影する方向(視線の方向)を移動・
回転する変換を視野変換 (viewing transformation) という.
⇒ 実際には 3 次元形状モデルを幾何変換することに
なる.
.
.
.
.
.
.
3 / 37
はじめに
CG で使われる変換の種類
幾何変換
投影変換
. . . . . . . . . .
OpenGL における変換
ティーポットを描く
まとめ
参考文献
§5.3 幾何変換
平行移動,回転移動,投影変換を行列で表現するために同次座標を用
いる.
.
定義 5.1 (同次座標)
.
..
T
x = (x1 , x2 , · · · , xn ) に対して
y1
,
w
x2 =
y2
,
w
···
, xn =
yn
w
T
が成り立つような y = (y1 , y2 , · · · , yn , w) を x の同次座標
.(homogeneous coordinate) 表現という.
..
.
.
.
.
.
.
.
x1 =
.
4 / 37
はじめに
CG で使われる変換の種類
幾何変換
投影変換
. . . . . . . . . .
OpenGL における変換
ティーポットを描く
まとめ
参考文献
§5.3.1 平行移動
T
T
点 x = (x1 , x2 , x3 ) を a = (a1 , a2 , a3 ) だけ平行移動した点
T
x′ = (x′1 , x′2 , x′3 ) は
 ′ 
 
 ′ 

x1
x1
1 0 0 a1
x1
x1 + a1
x′2  0 1 0 a2  x2 
 ′=
 
 ′ 

x3  0 0 1 a3  x3  ∴ x2′ = x2 + a2
x3
x3 + a3
1
0 0 0 1
1
となる.この変換は, y, y ′ を x, x′ の同次座標 (homogeneous
coordinate) 表現とするとき
y ′ = T (a) y
とかける.
.
.
.
.
.
.
5 / 37
はじめに
CG で使われる変換の種類
幾何変換
投影変換
. . . . . . . . . .
OpenGL における変換
ティーポットを描く
まとめ
参考文献
§5.3.2 回転
T
点 x = (x1 , x2 , x3 ) を x1 軸, x2 軸, x3 軸に対して時計回りに
T
θ1 , θ2 , θ3 だけ回転した点を x′ = (x′1 , x′2 , x′3 ) とするとき
 
x′1
1
0
0
x′2  0 cos θ1 − sin θ1
 ′ = 
x3  0 sin θ1
cos θ1
1
0
0
0
 ′ 
cos θ2
x1
0 sin θ2
x′2   0
1
0
 ′ = 
x3  − sin θ2 0 cos θ2
1
0
0
0
 ′ 
cos θ3 − sin θ3 0
x1
x′2   sin θ3
cos θ3
0
 ′ = 
x3   0
0
1
1
0
0
0

 
0
x1
 
0
 x2  ,
0 x3 
1
1
 
0
x1
 
0
 x2  ,
0 x3 
1
1
 
0
x1
 
0
 x2 
0 x3 
1
1
となる.この変換を
y ′ = Ri (θi ) y
(i = 1, 2, 3)
.
.
.
.
.
.
6 / 37
はじめに
CG で使われる変換の種類
§5.3.2 回転
とかく.
(注)
(
x′1
x′2
幾何変換
投影変換
. . . . . . . . . .
OpenGL における変換
ティーポットを描く
まとめ
参考文献
(cnt.)
)
=r
(
)
(
)
cos(α + θ)
cos α cos θ − sin α sin θ
=r
sin(α + θ)
cos α cos θ + sin α sin θ
(
)( )
cos θ − sin θ
x1
=r
sin θ cos θ
x2
x2
x0
x
θ
®
x1
x3
図 1: 回転
.
.
.
.
.
.
7 / 37
はじめに
CG で使われる変換の種類
幾何変換
投影変換
. . . . . . . . . .
OpenGL における変換
ティーポットを描く
まとめ
参考文献
§5.3.3 拡大・縮小
T
点 x = (x1 , x2 , x3 ) を x1 軸, x2 軸, x3
T
点 x′ = (x′1 , x′2 , x′3 ) は
 ′ 
b1 0 0
x1
x′2   0 b2 0
 ′=
x3   0 0 b3
1
0 0 0
軸 に対して b1 , b2 , b3 倍した
 
0
x1
x2 
0
 
0 x3 
1
1
T
となる.この変換を,b = (b1 , b2 , b3 ) として
y ′ = S (b) y
とかく.
.
.
.
.
.
.
8 / 37
はじめに
CG で使われる変換の種類
幾何変換
投影変換
. . . . . . . . . .
OpenGL における変換
ティーポットを描く
まとめ
参考文献
§5.3.4 反転
T
点 x = (x1 , x2 , x3 ) を x1 軸,および原点,に対して反転した点
T
x′ = (x′1 , x′2 , x′3 ) は
 ′ 


−1 0 0 0
x1
x1
x′2   0 1 0 0  x2 
 ′=


x3   0 0 1 0 x3 z  ,
1
0 0 0 1
1
 
 ′ 
x1
−1 0
0 0
x1
x′2   0 −1 0 0 x2 
 
 ′=
x3   0
0 −1 0 x3 
1
0
0
0 1
1
となる.これらの変換は,拡大・縮小の特別な場合とみなせる.
.
.
.
.
.
.
9 / 37
はじめに
CG で使われる変換の種類
幾何変換
投影変換
. . . . . . . . . .
OpenGL における変換
ティーポットを描く
まとめ
参考文献
§5.3.5 任意の軸回りの回転移動
T
点 x = (x1 , x2 , x3 ) を点 x0 = (x01 , x02 , x03 )T を始点とする単位ベク
T
トル n = (n1 , n2 , n3 ) に対して時計方向に θ だけ回転した点
′
′
′
′ T
x = (x1 , x2 , x3 ) への変換を考えてみよう.
x3
x
n
θ
x
0
x2
x1
図 2: 任意の軸回りの回転移動
.
.
.
.
.
.
10 / 37
はじめに
CG で使われる変換の種類
幾何変換
投影変換
. . . . . . . . . .
OpenGL における変換
ティーポットを描く
§5.3.5 任意の軸回りの回転移動
.1.
.2.
まとめ
参考文献
(cnt.)
点 x0 を原点に平行移動する.
(
)
y1 = T −x0 y
T
単位ベクトル n = (n1 , n2 , n3 ) を x3 軸回りに α だけ回転して
x2 − x3 平面内に移動する.
n2
n1
y2 = R3 (α) y1 , cos α = √ 2
, sin α = √ 2
2
n1 + n2
n1 + n22
x3
x3
®
n
x2
x1
図 3: 点 x0 を原点に平行移動
x2
x1
図 4: n を z 軸回りに α だけ回転
.
.
.
.
.
.
11 / 37
はじめに
CG で使われる変換の種類
幾何変換
投影変換
. . . . . . . . . .
OpenGL における変換
§5.3.5 任意の軸回りの回転移動
.3.
まとめ
参考文献
(cnt.)
n1 を x1 軸回りに β だけ回転して x1 軸と一致させる.
y3 = R1 (β) y2 ,
.4.
ティーポットを描く
cos β = n3
n2 を x3 軸回りに θ だけ回転する.
y4 = R3 (θ) y3
x3
x3
¯
µ
x2
x1
x2
x1
図 5: n1 を x1 軸回りに β だけ
回転
図 6: n2 を x3 軸回りに θ だけ回転
.
.
.
.
.
.
12 / 37
はじめに
CG で使われる変換の種類
幾何変換
投影変換
. . . . . . . . . .
OpenGL における変換
§5.3.5 任意の軸回りの回転移動
.5.
ティーポットを描く
まとめ
参考文献
(cnt.)
(3) の逆変換を行う.
y5 = R1−1 (β) y4
.6.
(2) の逆変換を行う.
y6 = R3−1 (α) y5
.7.
(1) の逆変換を行う.
(
)
y7 = T −1 −x0 y6
したがって,
(
)
(
)
y7 = T −1 −x0 R3−1 (α) R1−1 (β) R3 (θ) R1 (β) R3 (α) T −x0 y
となる.
.
.
.
.
.
.
13 / 37
はじめに
CG で使われる変換の種類
幾何変換
投影変換
. . . . . . . . . .
OpenGL における変換
ティーポットを描く
まとめ
参考文献
§5.3.6 Euler 角による回転
T
全体座標系 x1 -x2 -x3 の点 x = (x1 , x2 , x3 ) から局所座標系
T
x1L -x2L -x3L の点 xL = (x1L , x2L , x3L ) への回転が Euler 角 (α, β, γ)
で与えられているとき,
yL = R2 (γ) R1 (β) R3 (α) y
となる.
x3
x3L
x2L
¯
x2
x1
®
°
x1L
x10
図 7: Euler 角による回転
.
.
.
.
.
.
14 / 37
はじめに
CG で使われる変換の種類
幾何変換
投影変換
. . . . . . . . . .
OpenGL における変換
ティーポットを描く
まとめ
参考文献
§5.4 投影変換
.
.
定義 5.2 (視座標系)
.
..
全体座標系 (world coordinate system) x1 -x2 -x3 に対して,視線を x3v
軸とした x1v -x2v -x3v 座標系を視座標系 (viewing coordinate system) と
いう.全体座標系は右手系,視座標系は,通常,左手系とする.このと
き,
x1 = x1v , x2 = x2v となる.
.
..
.
x2=x2v
x3
x3v
x1=x1v
図 8: 視座標系
.
.
.
.
.
.
15 / 37
はじめに
CG で使われる変換の種類
幾何変換
投影変換
. . . . . . . . . .
OpenGL における変換
ティーポットを描く
まとめ
参考文献
§5.4 投影変換 (cnt.)
.
.
定義 5.3 (正規化視座標系)
.
..
視座標系の可視領域を正規化した座標系を正規化視座標系 (normalized
viewing
coordinate system) という.
.
..
.
この座標系は,第 7 章において,隠面/隠線処理に使われる.
»3
(1,1,1)
»2
({1,{1,0)
»1
図 9: 正規化視座標系
.
.
.
.
.
.
16 / 37
はじめに
CG で使われる変換の種類
幾何変換
投影変換
. . . . . . . . . .
OpenGL における変換
ティーポットを描く
まとめ
参考文献
§5.4 投影変換 (cnt.)
.
.
定義 5.4 (透視投影, 平行投影)
.
..
投影変換には次の 2 種類がある.
.1. 視点を x3v 軸上に置き,x3v 軸に垂直な面に投影する変換を透視投
影 (perspective projection) という.
.2. 視点を全体座標系の x3 軸上無限遠方に置き, x3v 軸に垂直な面に
投影する変換を平行投影 (parallel projection) という.
.
..
.
.
.
.
.
.
.
17 / 37
はじめに
CG で使われる変換の種類
幾何変換
投影変換
. . . . . . . . . .
OpenGL における変換
ティーポットを描く
まとめ
参考文献
§5.4 投影変換 (cnt.)
x2=x2v
x3v
x1=x1v
図 10: 透視投影
y=yv
zv
∞
x=xv
図 11: 平行投影
.
.
.
.
.
.
18 / 37
はじめに
CG で使われる変換の種類
幾何変換
投影変換
. . . . . . . . . .
OpenGL における変換
ティーポットを描く
まとめ
参考文献
§5.4 投影変換 (cnt.)
視点 x3v = 0, 投影面 x3v = d のとき,任意の点 xv から投影点 xd
の同次座標表現 y への透視投影は
  


y1d
1 0
0
0
x1v
y2d  0 1


0
0
 =
  x2v 
y3d  0 0


1
0
x31v 
wd
0 0 1/d 0
1
となる.
x2=x2v
xd
xv
x3v
x1=x1v
x3v=d
図 12: 原点からの透視投影
.
.
.
.
.
.
19 / 37
はじめに
CG で使われる変換の種類
幾何変換
投影変換
. . . . . . . . . .
OpenGL における変換
ティーポットを描く
まとめ
参考文献
§5.4 投影変換 (cnt.)
視点 x3v = −d, 投影面 x3v = 0 のとき,任意の点 xv から投影点 x0
の同次座標表現 y0 への透視投影は
  
 
y10
1 0
0
0
x1v
y20  0 1
 x2v 
0
0
 =
 
y30  0 0
0
0 x3v 
w0
0 0 1/d 1
1
となる.d → ∞ のとき,平行投影となる.
x2=x2v
x0
xv
x3v
x3v={d
x1=x1v
図 13: x3v = −d からの透視投影
.
.
.
.
.
.
20 / 37
はじめに
CG で使われる変換の種類
幾何変換
投影変換
. . . . . . . . . .
OpenGL における変換
ティーポットを描く
まとめ
参考文献
§5.5 OpenGL における変換
OpenGL では同次座標系の変換行列を使って各種変換を行っている.
v0=Pm:::P1An:::A1v
v
A1
:::
An
Point
Geometric
information transformations
P1
:::
Pm
Projective
transformations
Hidden Image
surface
processing
calculation
Picture
図 14: 変換行列を使った各種変換
.
.
.
.
.
.
21 / 37
はじめに
CG で使われる変換の種類
幾何変換
投影変換
. . . . . . . . . .
OpenGL における変換
§5.5 OpenGL における変換
ティーポットを描く
まとめ
参考文献
(cnt.)
.1. 変換行列の初期化
.
glMatrixMode
..
void glMatrixMode(Glenum mode);
.
現在対象としている行列を
4x4 の単位行列にする.
.
..
.
.
.
.
.
.
.
.
mode に引数 GL MODELVIEW, GL PROJECTION, GL TEXTURE を指
定して,幾何変換,射影変換,テクスチャー行列のどれを操作するか指
.定する.
..
.
.
glLoadIdentity
.
..
void glLoadIdentity(void);
.
22 / 37
はじめに
CG で使われる変換の種類
幾何変換
投影変換
. . . . . . . . . .
OpenGL における変換
§5.5 OpenGL における変換
ティーポットを描く
まとめ
参考文献
(cnt.)
.
.
変換の例
.
..
glMatrixMode(GL_PROJECTION); /*射影変換の設定*/
glLoadIdentity(); /*初期化: P_0 = I*/
gluPerspective(60.0, 1.0, 1.0, 10.0); /*P_1*/
...
glMatrixMode(GL_MODELVIEW); /*幾何変換の設定 */
glLoadIdentity(); /*初期化: A_0 = I*/
glTranslatef(-1.0, 0.0, 0.0); /* x 軸方向移動: A_1*/
glRotatef(-30.0, 0.0, 0.0, 1.0); /* 回転: A_2 */
glutWireTeapot(1.0); /* ティーポットを描画: v’=P_1A_2A_1v */
...
.
..
.
.
.
.
.
.
.
23 / 37
CG で使われる変換の種類
幾何変換
投影変換
. . . . . . . . . .
OpenGL における変換
§5.5 OpenGL における変換
ティーポットを描く
まとめ
参考文献
(cnt.)
.2. OpenGL における平行投影変換
.
glOrtho()
..
void glOrtho(Gldouble left, Gldouble right,
Gldouble bottom, Gldouble top, Gldouble near,
Gldouble far);
.
図
. 15 のとおり.
..
.
.
はじめに
x2=x2v
left
top
near
far
x3v
∞
bottom
x1=x1v
right
図 15: OpenGL における平行投影変換
.
.
.
.
.
.
24 / 37
CG で使われる変換の種類
幾何変換
投影変換
. . . . . . . . . .
OpenGL における変換
§5.5 OpenGL における変換
ティーポットを描く
まとめ
参考文献
(cnt.)
.3. OpenGL における透視投影変換
.
gluPerspective()
..
void gluPerspective(GLdouble fovy, Gldouble aspect,
GLdouble near, Gldouble far)
.
図
. 16 のとおり.
..
.
x2=x2v
aspect=w=h
w
h
.
はじめに
near
far
x3v
fovy
x1=x1v
図 16: OpenGL における透視投影変換
.
.
.
.
.
.
25 / 37
CG で使われる変換の種類
幾何変換
投影変換
. . . . . . . . . .
OpenGL における変換
§5.5 OpenGL における変換
ティーポットを描く
まとめ
参考文献
(cnt.)
.4. 視点の設定
.
gluLookAt()
..
void gluLookAt(GLdouble e1, GLdouble e2, GLdouble e3,
GLdouble c1, GLdouble c2, GLdouble c3, GLdouble u1,
GLdouble u2, GLdouble u3)
.
図 17 のとおり.ただし, u1, u2, u3 は,ウィンドウに表示される画像
.の上の方向を示す.
..
.
.
はじめに
x2=x2v
(c1,c2,c3)T with x3-axis
T
(e1,e2,e3) with x3-axis
x3
x3v
(u1,u2,u3)T with x3-axis
x1=x1v
図 17: OpenGL における視点の設定
.
.
.
.
.
.
26 / 37
CG で使われる変換の種類
幾何変換
投影変換
. . . . . . . . . .
OpenGL における変換
§5.5 OpenGL における変換
ティーポットを描く
まとめ
参考文献
(cnt.)
.5. 平行移動
.
glTranslatef()
..
void glTranslatef(GLfloat x1, GLfloat x1, GLfloat x3)
.
局所座標系を
x1 , x2 , x3 軸に x1, x2, x3 だけ移動する.
.
..
.6. 回転
.
glRotatef()
..
void glRotatef(GLfloat angle, GLfloat x1, GLfloat x2,
GLfloat x3)
.
.
はじめに
.
• angle は度数で指定する.例えば,x1 -x2 平面で 60 度左に回転する場合
glRotatef(60.0, 0.0, 0.0, 1.0) とかく.
.
.
.
.
.
.
.
.
..
.
27 / 37
はじめに
CG で使われる変換の種類
幾何変換
投影変換
. . . . . . . . . .
OpenGL における変換
§5.5 OpenGL における変換
ティーポットを描く
まとめ
参考文献
(cnt.)
.7. 拡大・縮小
.
glScalef()
..
void glScalef(GLfloat x1, GLfloat x2y, GLfloat x3)
.
図
. 18 のとおり.
..
.
glPopMatrix
..
void glPopMatrix()
.
.
.
.
.
.
.
.
図
. 18 のとおり.
..
.
.
.
各軸方向へ指定された値で伸縮させる.例えば,x1 , x2 方向に半分の大
きさにする場合
glScalef(0.5, 0.5, 1.0) とかく.
.
..
.
.8. 変換行列の保存と呼出し
.
glPushMatrix
.
..
void glPushMatrix()
.
28 / 37
はじめに
CG で使われる変換の種類
幾何変換
投影変換
. . . . . . . . . .
OpenGL における変換
§5.5 OpenGL における変換
push
stack
I
A 2A 1
まとめ
参考文献
(cnt.)
push
pop
A 3A 2A 1
ティーポットを描く
A 2A 1
pop
A2A1
A5:::A1
A 2A 1
A2A1
glScalef()
glLoadIdentity() glScalef()
glTranslatef() draw¡quad()
glTranslatef()
glScalef()
glRotatef()
draw¡tri()
図 18: OpenGL における変換行列の保存と呼出し
.
.
.
.
.
.
29 / 37
はじめに
CG で使われる変換の種類
幾何変換
投影変換
. . . . . . . . . .
OpenGL における変換
ティーポットを描く
まとめ
参考文献
§5.6 ティーポットを描く
ティーポットを平行投影変換で描く.
.
program5 1.c
..
int main(int argc, char **argv)
...
glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0);
trackball(quat , 0.0, 0.0, 0.0, 0.0);
...
void display(void)
...
/* ティーポットを描画 */
glColor3f(1.0, 1.0, 1.0);
glutWireTeapot(0.4);
...
.
..
.
.
.
.
.
.
.
.
.
30 / 37
はじめに
CG で使われる変換の種類
幾何変換
投影変換
. . . . . . . . . .
§5.6 ティーポットを描く
OpenGL における変換
ティーポットを描く
まとめ
参考文献
(cnt.)
このプログラムから trackball.h, trackball.c を使う.
マウスのための関数
.
glutMouseFunc()
..
void glutMouseFunc(void (*func)(int button, int state,
int x1, int x2))
.
• func にはマウスのボタンが押されたときに実行する関数のポイン
タを与える.
.
..
GLUT MIDDLE BUTTON, GLUT RIGHT BUTTON),state には
押した (GLUT DOWN) のか離した (GLUT UP) のか,x と y には
その位置が渡される.
.
.
.
.
.
.
.
• button には押されたボタン (GLUT LEFT BUTTON,
.
31 / 37
はじめに
CG で使われる変換の種類
幾何変換
投影変換
. . . . . . . . . .
§5.6 ティーポットを描く
OpenGL における変換
ティーポットを描く
まとめ
参考文献
(cnt.)
.
glutMotionFunc()
..
void glutMotionFunc(void (*func)(int x1, int x2))
.
• func には,マウスのいずれかのボタンを押しながらマウスを動か
したときに実行する関数のポインタを与える.
• x1 と x2 には、現在のマウスの位置が渡される.
等の中で定義されている記号定数 NULL を使用しても良い).
.
ダブルバッファリング(ちらつきの原因となる画像の作成過程をみせ
ないために,2つのバッファを用いて表示画面を交換すること)のため
に次の関数が用意されている.
.
• 設定を解除するには引数に 0(ヌルポインタ)を指定する(stdio.h
.
..
• glutInitDisplayMode(GLUT DOUBLE) を指定する.
• glFlush() の代りに glutSwapBuffers() を使用する.
.
.
.
.
.
.
32 / 37
CG で使われる変換の種類
幾何変換
投影変換
. . . . . . . . . .
§5.6 ティーポットを描く
OpenGL における変換
ティーポットを描く
まとめ
参考文献
(cnt.)
ティーポットを透視投影変換で描く.
.
program5 2.c
..
int main(int argc, char **argv)
...
gluPerspective(70.0, 1.0, 1.0, 10.0);
...
void display(void)
...
/* ティーポットを描画 */
glColor3f(1.0, 1.0, 1.0);
glutWireTeapot(1.0);
...
.
..
.
.
.
.
.
.
.
.
はじめに
.
33 / 37
CG で使われる変換の種類
幾何変換
投影変換
. . . . . . . . . .
§5.6 ティーポットを描く
OpenGL における変換
ティーポットを描く
まとめ
参考文献
(cnt.)
ティーポットと水滴を図のように移動する.
.
program5 3.c
..
...
void display(void)
...
// glPushMatrix();
// glTranslatef(0.0, 0.0, 0.0);/* x1 軸方向移動 */
// glRotatef(0.0, 0.0, 0.0, 1.0);/* 回転 */
glColor3f(1.0, 1.0, 1.0);/* 色指定 */
glutWireTeapot(1.0);/* ティーポットを描画 */
// glPopMatrix();
...
.
..
.
.
.
.
.
.
.
.
はじめに
.
34 / 37
はじめに
CG で使われる変換の種類
幾何変換
投影変換
. . . . . . . . . .
§5.6 ティーポットを描く
OpenGL における変換
ティーポットを描く
まとめ
参考文献
(cnt.)
図 19: ティーポットと水滴
.
.
.
.
.
.
35 / 37
はじめに
CG で使われる変換の種類
幾何変換
投影変換
. . . . . . . . . .
OpenGL における変換
ティーポットを描く
まとめ
参考文献
§5.7 まとめ
CG で使われる幾何変換,投影変換,視野変換の理論と OpenGL を用
いた変換方法についてみてきた.
.1.
幾何変換,投影変換,視野変換では同次座標表現が用いられる.
.2.
平行移動,回転移動,拡大・縮小,反転移動はそれぞれ同次座標表
現の変換行列で与えられる.一連の変換は,変換行列の積で与えら
れる.
.3.
OpenGL における平行投影変換,透視投影変換,視点の設定,幾何
変換の関数について学んだ.
.
.
.
.
.
.
36 / 37
はじめに
CG で使われる変換の種類
幾何変換
投影変換
. . . . . . . . . .
OpenGL における変換
ティーポットを描く
まとめ
参考文献
参考文献
[1] 嘉数侑昇, 古川正志.
CAD/CAM/CG のための形状処理工学入門.
森北出版, 1995.
[2] James D. Foley, Steven K. Feiner, Andries van Dam, John F. Hughes, 佐藤
義雄 (訳).
コンピュータグラフィックス 理論と実践.
オーム社, 2001.
[3] 千葉則茂, 土井章男.
3次元 CG の基礎と応用.
サイエンス社,, 2004.
[4] OpenGL 公式サイト.
http://www.opengl.org/.
[5] 床井浩平.
GLUT による「手抜き」OpenGL 入門.
http://www.wakayama-u.ac.jp/˜tokoi/opengl/libglut.html.
.
.
.
.
.
.
37 / 37