$B%j%s%/(B
$B!&(BOpenGL(ver.2.1)$B$N3F4X?t(B($B>.J8;z$N(Bgl$B$N#2J8;z$G;O$^$k4X?t(B)$B$N@bL@(B
$B!&(BOpenGL$B$N(BProgramming Guide Book (ver1.1, $BDL>N@VK\(B)
10.4 $BK!@~%Y%/%H%k$NIUM?(B
$B%Q%C%A$4$H$KK!@~%Y%/%H%k$r@5$7$/M?$($J$$$H!"(BCG$B$O@53N$K$OI=<($5$l$^$;$s!#(B
$BC1=c$J?^7A$J$i$H$b$+$/!"Bg$-$/$J$k$H$3$l$OCWL?=}$K$J$j$^$9!#(B
$BK!@~%Y%/%H%k$O%Q%C%A$,7h$^$C$F$$$l$PDj$^$j$^$9!#(B
$B$=$l$f$($K!"K\@a$G$O!J1i=,#4$H$O0c$C$F!K%U%!%$%k$+$i%G!<%?$r(Bic2_PATCH$B9=B$BN$KFI$_9~$`;~E@$GK!@~%Y%/%H%k$r5a$a$^$9!#(B
$B$3$N$?$a$K!"(Bic2_PATCH$B9=B$BN$GK!@~%Y%/%H%k$r3JG<$G$-$k$h$&$K3HD%$7$^$9!#(B
OpenGL$B$G$O#1$D$ND:E@$rM?$($kEY$KK!@~%Y%/%H%k>pJs$rIUM?$G$-$^$9!#(B
$B$3$N$H$-!"(BglEnable(GL_NORMALIZE)$B$r;XDj$7$F$*$/$H!"K!@~%Y%/%H%k$r@55,2=$7$F$*$/I,MW$,$"$j$^$;$s!#(B
$B$3$N$?$a!"$3$3$G$OK!@~%Y%/%H%k$H$7$F30@Q$N7W;;7k2L$rD>@\:NMQ$7$^$9!#(B
110-4-NormalVector.c
110-3$B$+$i$N:9J,(B
10.5 $BK!@~%Y%/%H%k$NI=<((B
$B4v2?E*$J7W;;$,$"$C$F$$$k$+$I$&$+$r3NG'$9$k$K$O$d$O$jI=<($7$F$_$k$K8B$j$^$9!#(B
$B!&%Q%C%A$N=E?4$r5/E@$K$9$k!#(B
$B!&K!@~J}8~$K@~J,$rIA$/!#(B
$B!&K!@~$NI=<($ND9$5$O%Q%C%A$NLL@Q(B($B$J$$$7$=$NJ?J}:,(B)$B$KHfNc$5$;$k!#(B
$B!&@~J,$r8+$d$9$/$9$k$?$a$K!"K!@~@~J,$NI=<(;~$K$O(BLightin$B$N8z2L$r0l;~E*$K@Z$k!#(B
110-5-ShowNormal.c
110-4$B$+$i$N:9J,(B
10.6 $B8w8;$N0l;~E*A`:n(B
$B$;$C$+$/K!@~$r@5$7$/M?$($F$b!"(BDiffuse$B8w8;$, $B$=$3$G!"(B7.6$B@a$d(B7.7$B@a$G9T$C$?(BMODELVIEW$B9TNs$NA`:n$r6n;H$7$F!"!V8w8;(B$B$N$_(B$B$r0l;~E*$KA`:n!W$G$-$k$h$&$K$7$^$9!#(B
110-6-MoveLight.c
11.1 $BF);kEj1F(B
8.1$B@a(B($B0E<(E*$K$O(B3.3$B@a(B)$B$+$i$3$3$^$G$OD>8rEj1F$rMQ$$$F$$$^$7$?!#(B
$BF);kEj1F$r7hDj$9$kK\ tan(35.0[deg] / 2) = (400[pixel] / 2) / f[pixel]
$B 111-1-Perspective.c
$B%W%m%0%i%`$O!"(B'P'$B$r2!$9EY$KD>8rEj1F$HF);kEj1F$r@Z$jBX$($i$l$^$9!#(B
11.2 $BE,@Z$J5wN%(B
11.1$B@a$N%W%m%0%i%`$G $BF);kEj1F$K@Z$jBX$($?8e!"(B'j'$B%-!<$r$7$P$i$/2!$7$F$$$k$H$h$&$d$/MM;R$,$o$+$j$^$9!#(B
$B3j$i$+$KF0$/%"%K%a!<%7%g%s$r
12.1 $BA`:n$N5-O?(B
$B4J0W%"%K%a!<%7%g%s$NJ}?K$H$7$F!"A4$F$N%-! $B4J0W%"%K%a!<%7%g%s$N 112-0-Structures.c($B111-1-Perspective.c
($B$H$3$m$G$=$l$O$J$<$G$7$g$&$+$M!)(B)
$B!&$"$k;~E@$G$NJ*BN8GM-:BI87O$+$i%+%a%i@$3&:BI87O$X$NJQ49$r9T$&(BMODELVIEW$B9TNs$r%m%C%/$9$k!#(B
$B!&0J9_$NA`:n$O!"8w8;$KBP$7$F$OE,MQ$9$k$b$N$N!"J*BNI=<($K$O@h$[$I%m%C%/$7$?(BMODELVIEW$B9TNs$rMQ$$$k!#(B
$B!&%m%C%/$r2r=|$7$?$H$-$O!"%m%C%/;~E@$G$N>u67$KI|5"$5$;$k!#(B
110-5$B$+$i$N:9J,(B
11. $BF);kEj1F(B
$BK\@a$G$O$$$h$$$hF);kEj1F$r@_Dj$7$^$9!#(B
$B$3$l$K$h$j!"FC$K1|9T$-$N$"$kJ*BN$N8+$+$1$,NI$/$J$j$^$9!#(B
$B$3$3$G$O;#A|LL$K$O=i4|@_Dj$N=D2#(B400$B2hAG(B[pixel]$B$rA[Dj$7$FOC$r$7$^$9!#(B
$B$3$N$H$-$O!">GE@5wN%$NC10L$b2hAG(B[pixel]$B$K$J$j$^$9!#(B
$B?eJ?2h3Q(B35$B!k$K$J$k$h$&$J>GE@5wN%$O!"0J2<$N7W;;$GM?$($i$l$^$9!#(B
f = 634.319[pixel]
$B%+%a%i$O(B(0,0,-1)$B$NJ}8~$r8~$$$F$$$k$N$G!"Nc$($P(B z=-0.1 $B!A(B z=-100.0 $B$NHO0O$r;XDj$9$k$H$-$O(B(0.1$B!A(B100.0)$B$H$J$j$^$9!#(B
$B$3$NHO0O;XDj$K$O@5CM$G$"$l$P$I$N$h$&$JCM$b@_Dj$G$-$^$9$,!"$"$^$j$KHO0O$,Bg$-$$$H(BCG$BIA2h;~$N@:EY$,Mn$A$^$9!#(B
110-6$B$+$i$N:9J,(B
$B=i4|>uBV$OD>8rEj1F$G$9!#(B
$B$G$O8+$F$$$k;d!J$"$J$?!K$O2?$r8+2a$4$7$F$7$^$C$?$N$G$7$g$&!)(B
$B8+2a$4$7$F$7$^$C$?MW0x$,2?$+$o$+$j$^$7$?$+!)(B
12. $B4J0W%"%K%a!<%7%g%s(B
$B!&5-O?$N3+;O$K$O(B'S'$B%-!<$r!"5-O?$N=*N;$K$O(B'E'$B%-!<$r;H$$$^$9!#(B
$B!&5-O?$N3+;O$KEv$?$C$F$O!"2a5n$N%j%s%/%H%j%9%H$K;H$C$F$$$?%a%b%j$r2rJ|$7!"(BPROJECTION$B9TNs$H(BMODELVIEW$B9TNs$r=i4|2=$7$^$9!#(B
$B!&G0$N$?$a!"(B'A'$B%-!<$G8=:_$NA`:n5-O?$rI8=`=PNO$KI=<($7$^$9!#(B
$B!&(B'P'$B$GF);kEj1F$r@_Dj!#(B
12.2 $BA`:n$N:F8=(B
$BD9$$4V$+$+$j$^$7$?$,!"$h$&$d$/:F@85!G=$G$9!#(B
112-2-Replay.c
12.3 $BA`:n$NJ]B8$HFI9~(B
$B!&A`:n5-O?$r!"(B'W'$B%-!<$G%"%K%a!<%7%g%s%U%!%$%k(B(IC2_animation.txt)$B$KJ]B8$5$;$^$9!#(B
112-3-AnimationFile.c
12.4 $B%"%K%a!<%7%g%s$N5-O?(B
$BA`:n$rA4$FIA2h$9$k$N$O%a!<%-%s%0$r8+$F$$$k$h$&$J$b$N$G!"$"$^$j$$$$5$J,$G$O$J$$$+$b$7$l$^$;$s!#(B
12.5 $B%-!<%j%9%H(B
$B!ZEj1F$N@Z$jBX$(![(B
$B!Z0\F0![!J0\F0$O(Bdelta_t$B$4$H!K(B
$B!Z2sE>![!J2sE>$O(Bdelta_r$B$4$H!K(B
$B!Z3HBg=L>.![!J#5!s9o$_(B)
$B!Z%j%;%C%H![(B
$B!Z%"%K%a!<%7%g%s@)8f![(B
$B!Z%a%?%3%^%s%I![!J%"%K%a!<%7%g%s$G$O5-O?$5$l$J$$!K(B
N : $BK!@~%Y%/%H%k$NIA2h!&HsIA2h$N@Z$jBX$(!J=i4|!'HsIA2h!K(B
$B2]Bj$O$$$:$l$b(B2011/11/28,13:30 (JST)$BDs=PDy@Z$G$"$k!#(B
12.3$B@a$N(B112-3-AnimationFile.c$B$K$*$$$F!":F@84V3V$r%$%s%?%i%/%F%#%V$KJQ99$G$-$k$h$&$K%W%m%0%i%`$r2~NI$;$h!#(B
$BDs=PJ*(B
11.1$B@a$NF);kEj1F$K$*$$$F!"@bL@$NDL$j!"?bD>2h3Q(B35$B!k!";#A|LL$O=i4|;~$N=D2#(B400$B2hAG$rA[Dj$9$k!#$3$N$H$-!"86E@$KH>7B(B1.0$B$N5e$,@_CV$5$l$?$H$7$F!"$3$N5e$r;#A|LL$$$C$Q$$$KIA2h$9$k$H$-$N(BZ$B<4>e$N%+%a%i0LCV$r5a$a$h!#?^LL$H7W;;2aDx$b<($;!#(B
$BDs=PJ*(B
12.3$B@a$N(B112-3-AnimationFile.c$B$N%"%K%a!<%7%g%s:F@8ItJ,$N%"%k%4%j%:%`$O!"$"$k>r7o$N$b$H$G!JLdBj$H$J$k%Q%i%a!<%?$,$"$k>uBV$K$J$k$H!K:F@8Cf$K:[email protected]$,=y!9$KCY$/$J$k4m81@-$,$"$k!#(B
$BDs=PJ*(B
$BI,?\2]Bj(B5C$B$G $B;29M!'(B112-5-TimeMeasurement.c $B%^%$%/%mIC(B(10-6$BIC(B)$B$^$G7WB,$9$k$?$a$N%W%m%0%i%`$NNc(B
$BDs=PJ*(B
OpenGL$B$N(BglutSetTimer()$B$rMQ$$$^$9!#(B
$B!&A`:n4V3V$O0lDj(B(playinterval [ms])$B$K$J$j$^$9!#(B
$B!&A`:n5-O?$r!"(B'G'$B%-!<$G:F8=$5$;$^$9!#(B
$B!&!V2?$b$7$J$$!W$H$$$&A`:n$r(B'z'$B%-!<$G
112-1$B$+$i$N:9J,(B
$B!&A`:n5-O?$r!"(B'R'$B%-!<$G%"%K%a!<%7%g%s%U%!%$%k(B(IC2_animation.txt)$B$+$iFI$_9~$a$k$h$&$K$7$^$9!#(B
$B!&%"%K%a!<%7%g%s%U%!%$%k$O%F%-%9%H$J$N$G!"%(%G%#%?$G3NG'$9$k$3$H$b$G$-$^$9!#(B
$B!&%"%K%a!<%7%g%s%U%!%$%k$G$O(B # $B$G;O$^$k9T!"6u9T$O%b%G%k%U%!%$%k$HF1MML5;k$7$^$9!#(B
112-2$B$+$i$N:9J,(B
$B$=$3$G!"<+J,$,;W$C$?%U%l!<%_%s%0$N$_IA2h$7$F$$$/$h$&$K$7$^$9!#(B
$B!&%"%K%a!<%7%g%s%U%l!<%`$N3NDj$r;X<($9$k(B'F'$B%-!<$rMQ0U$7$^$9!#(B
$B!&%"%K%a!<%7%g%s%U%!%$%kFb$G$O(B'F'$B%-!<5-O?;~$K2~9T$7$^$9!#(B
O : $BD>8rEj1F$X@Z$jBX$(!J=i4|>uBV$OD>8rEj1F!K(B$B!J(B12$B@a0J9_!K(B
P : $BF);kEj1F$X@Z$jBX$((B$B!J(B12$B@a0J9_!K(B
P : $BD>8rEj1F!"F);kEj1F$N@Z$jBX$(!J=i4|>uBV$OD>8rEj1F(B, 11$B@a$^$G!K(B
h : $BJ*BN:BI87O$G$N(BX$B<4IiJ}8~0\F0(B
l : $BJ*BN:BI87O$G$N(BX$B<4@5J}8~0\F0(B
n : $BJ*BN:BI87O$G$N(BY$B<4IiJ}8~0\F0(B
u : $BJ*BN:BI87O$G$N(BY$B<4@5J}8~0\F0(B
j : $BJ*BN:BI87O$G$N(BZ$B<4IiJ}8~0\F0(B
k : $BJ*BN:BI87O$G$N(BZ$B<4@5J}8~0\F0(B
x : $BJ*BN:BI87O$G$N(BX$B<42s$jIi2sE>(B
w : $BJ*BN:BI87O$G$N(BX$B<42s$j@52sE>(B
a : $BJ*BN:BI87O$G$N(BY$B<42s$jIi2sE>(B
f : $BJ*BN:BI87O$G$N(BY$B<42s$j@52sE>(B
s : $BJ*BN:BI87O$G$N(BZ$B<42s$jIi2sE>(B
d : $BJ*BN:BI87O$G$N(BZ$B<42s$j@52sE>(B
v : $BJ*BN:BI87O$G$N=L>.(B
b : $BJ*BN:BI87O$G$N3HBg(B
R : MODELVIEW$BC_@Q9TNs$N=i4|2=(B
z : $BC10L;~4V7P2a(B
< : $BC10L;~4V$N(B10$B!sC;=L(B
> : $BC10L;~4V$N(B10$B!s1dD9(B
F : $B%"%K%a!<%7%g%s%U%l!<%`$N3NDj(B
q : $B%W%m%0%i%`$N=*N;(B
Q : $B%W%m%0%i%`$N=*N;(B
ESC : $B%W%m%0%i%`$N=*N;(B
p : $B8=:_$N(BMODELVIEW$B9TNs(B, PROJECTION$B9TNs$NI=<((B
T : $B%F%#!<%]%C%H$NIA2h!&HsIA2h$N@Z$jBX$(!J=i4|!'HsIA2h!K(B
L : $B8w8;$N0KCNCOE*0\F0$NM-8z2=!&L58z2=!J=i4|!'L58z!K(B
S : $B%"%K%a!<%7%g%s5-O?$N3+;O(B
E : $B%"%K%a!<%7%g%s5-O?$N=*N;(B
A : $B%"%K%a!<%7%g%s5-O?$NI=<((B
G : $B%"%K%a!<%7%g%s$NIA2h(B
W : $B%"%K%a!<%7%g%s$N%U%!%$%kJ]B8(B
I : $B%"%K%a!<%7%g%s$N%U%!%$%kFI9~(B
$B2]Bj(B5. 2011/11/28$B=PBjJ,(B
$B:F@84V3V$rC;$/$9$k$H$-$O(B'<'$B%-!<$G(B10$B!sC;=L!":F@84V3V$rD9$/$9$k$H$-$O(B'>'$B%-!<$G(B10$B!s1dD9$H$9$k!#(B
$BA`:n5-O?$bH?1G$G$-$k$h$&$K$9$k$3$H!#(B
$B%=!<%9%U%!%$%k$N@hF,9T$K%3%a%s%H$N7A$G;aL>!"3X@RHV9f!"2]BjHV9f(B(5A-1)$B$r<($9$3$H!#(B
L$BEo(B5$B3,7W;;5!<<$N(BLinux$B4D6-$K$F%3%s%Q%$%k$G$-$k$3$H!#(B
$B%W%m%0%i%`$H$7$FJQ99$r2C$($?$H$3$m$K!"F0:n@bL@$r<+J,$N8@MU$K$h$k%3%a%s%H$N7A$G=q$-2C$($F@bL@$7$F$*$/$3$H!#(B
$B$J$*!"H>7B(B1.0$B$N5e$NIA2h$N6a;w$H$7$F!"(BZ=0$BJ?LL$K$*$1$kH>7B(B1.0$B$N1_$rMQ$$$F$h$$!#(B
pdf$B%U%!%$%k$NKAF,$K!";aL>!"3X@RHV9f!"2]BjHV9f(B(5B-1)$B$r<($9$3$H!#(B
$B3:Ev%W%m%0%i%`ItJ,$rH4?h$7!"$=$NLdBj$N860x$r@bL@$;$h!#(B
pdf$B%U%!%$%k$NKAF,$K!";aL>!"3X@RHV9f!"2]BjHV9f(B(5B-1)$B$r<($9$3$H!#(B
$BLdBj$H$J$k%Q%i%a!<%?$H!":F@8$KMW$9$k=jMW;~4V$H$N4X78$r%0%i%U$K$7$F<($;!JCM$rJQ$($F#1#0#02s0J>e7WB,$9$k$3$H!K!#(B
$B$=$N7k2L$+$iLdBj$J$$$H9M$($k%Q%i%a!<%?$NHO0O$rM}M3$H6&$K<($;!#(B
$B%=!<%9%U%!%$%k$N@hF,9T$K%3%a%s%H$N7A$G;aL>!"3X@RHV9f!"2]BjHV9f(B(5X-1)$B$r<($9$3$H!#(B
L$BEo(B5$B3,7W;;5!<<$N(BLinux$B4D6-$K$F%3%s%Q%$%k$G$-$k$3$H!#(B
$B%W%m%0%i%`$H$7$FJQ99$r2C$($?$H$3$m$K!"F0:n@bL@$r<+J,$N8@MU$K$h$k%3%a%s%H$N7A$G=q$-2C$($F@bL@$7$F$*$/$3$H!#(B
5A-1$B$HF10l%=!<%9$G$b9=$o$J$$$,!"$=$N>l9g$O(B5A-1$B$H(B5X-1$B$N$=$l$>$l$N%W%m%0%i%`2~JQ>l=j$,6hJL$G$-$k$h$&$K!"%3%a%s%H$N@hF,$K!V(B5X-1$B!W$H5-$9$3$H!#(B
$BLdBj$H$J$k%Q%i%a!<%?$rCM$rJQ$($F#1#0#02s0J>e7WB,$7$??tCM7k2L$r%F%-%9%H$G<($7!$$5$i$K$=$l$r%Q%i%a!<%?$H:F@8$KMW$9$k=jMW;~4V$H$N4X78$N%0%i%U$K$7$?(Bpdf$B%U%!%$%k!#(B
kameda[at]iit.tsukuba.ac.jp, 2011.