プログラム行 マトリックススタック 描画の様子 Projection Model View

c3-2.c におけるマトリックススタックと描画の状態図
(変換行列は、P:投影、T:平行移動、R:回転、S:拡大・縮小、I:単位行列を表す)
プログラム行
51
glMatrixMode(GL_PROJECTION);
52
glLoadIdentity();
マトリックススタック
Projection
Model View
描画の様子
I
y
z near
53
gluPerspective(30.0, aspect, 1.0, 50.0);
P
30°
0
z
ビューボリューム
視点
z far
x
54
glMatrixMode(GL_MODELVIEW);
P
I
15
glPushMatrix();
P
I
I
−20
16
glTranslatef( 0.0, 0.0, -20.0 );
P
z
18
glPushMatrix();
y
y
T*I
I
z
視点
0
x
P
T
T
I
x
y
変換後の座標
19
glTranslatef( 0.0, 1.0, 0.0 );
P
T・T
T
I
z
1
0
x
1
x
z
20
myWireCylinder( 1.0, 2.0, 12 );
P
T・T
T
I
0
x
z
x
z
(変換行列は、P:投影、T:平行移動、R:回転、S:拡大・縮小、I:単位行列を表す)
Projection
21
glTranslatef( 0.0, 1.0, 0.0);
22
glRotatef( -90.0, 1.0, 0.0, 0.0 );
23
glutWireCone( 1.0, 2.0, 12, 3 );
Model View
y
P
T・T・T
T
I
x
z
z
P
R・T・T・T
T
I
y
x
z
P
R・T・T・T
T
I
y
x
y
24
glPopMatrix();
P
T
I
x
z
25
glTranslatef( 0.0, -1.0, 0.0 );
y
P
T・T
I
x
z
26
myWireCylinder( 1.0, 2.0, 12 );
P
y
T・T
I
x
z
y
28
glPpoMatrix();
P
I
x
z