<画角の効果>
・画角を増やすと、遠くにあるように見える。図形科学では広角レンズだと物体が大 きく見えると習ったが、ここではそれほど感じられなかった。 距離は一定なので、より広い範囲の景色が見えるようになったため立方体が小さく なり結果的に遠く見えるということである。
↓
画角が大きくなれば,より広い範囲が表示されるので,同じ距離にある物体は小さく見えるようになるはずだが.

・画角が180度を超えた時に投影像は反転していた。画角が 360-指定した 画角 のときの画像を反転しているようだった。なぜこのようの反転するの だろうか?
・0度 <(画角)< 180度 では、画角が大きいほど立方体が小さく表示される。180度 <(画角)< 360度 では、上下左右が逆に表 示され、画角が大きいほど立方体が大きく表示される。どちらの場合も 180度 に近いほど小さく表示されて いる。
・画角が180°から360°の間にある場合、画角をxとして画角が360°-xの場合と同じ大き さの立体が反転して描かれる。画角がこの範囲にある場合、視線と反対方向を360°- xの画角で見ているとして扱われるためだろうか。 画角が0°以上360°未満の範囲にない場合、画角に360°の整数倍を足して得られるこ の範囲の値として扱われるようだ。
・引数が画角 180 付近で表示されなくなり、その後 180 を 1 周期として 画像が上下反転して表示された。
↓
OpenGLでは角度の範囲について厳密に決めていないようで,180度以上の結果は実装に依存しているらしい.必ず反転するとは限らないが,画角が180度を超えた場合の視錐台と投影面を考えてみると,比較的自然な結果とも考えられる.

・画角 0度 では何も表示されなかった。視錐台の底面の面積が 0 になるためと考えられる。
・webページの「昨年度のレポートに対する考察」の部分を見てみる と「0°のときは直投影となり普通に描画される。」とあるが、表示されなかった。 プログラムの打ち間違いも特に見当たらないので、javaの仕様がかわったりでもした のだろうか。
・昨年度のコメントで、画角を 0 度にすると平行投影になると書かれていたが自分の環 境では表示されませんでした。
↓
これもOpenGLの実装に依存しているようである.

・画角と 180 度にすると表示されないのは、表示面積が、1/tan2θ	に比例すると思わ れることから理解できましたが、超広角レンズのような表示をするためにはどのように すればよいか気になります。行列の変換では直線が直線にしか移らないので、出来 ないような気がしますが。
↓
180度以上の魚眼レンズのようなものをイメージしているのであろうが,透視投影を仮定する限りは実現できない.魚眼レンズをシミュレートするような投影法を考える必要がある.ただし,1つの行列で表現できるとは思われないので,OpenGLの機能を使って実現することが難しいだろう.

<クリッピング面>
・クリッピング面nearの指定をfarよりも大きくしてみたらnearとfarを入れ替 えた画像と同じものが表示された(near = 9.5, far = 10 のときと near = 10, far = 9.5のとき)gluPerspectiveメソッドの内部でnearがfarより小さ くなるような入れ替えが行われるようになっているのだろうか?
・nearがfarより遠くても全く値を入れ替えたものと全く表示がかわらない様子に不思 議な感じがしました。
・クリッピング面の引数として near>far となるように与えてみたところ、 何も表示されなくなると予想したが、実際は far>near の場合と同じに 表示された。
↓
OpenGLの実装に依存している(はずな)ので,必ず同じになるとは限らないが,near と far の前後関係にはあまり大きな意味がなく,無限に延びる錐体の底面を2ヶ所指定していると考えれば良いだろう.

・クリッピング面を配置するのにクリッピング面までの距離が負にしてしまうと視点 を挟んで両側にクリッピング面があり投影はできないものと思われるが、実行して みると、下段中央ののように表示された。(途中省略)インターネット上で検索してみたところ情報 が古かったり、信頼できる情報元かはわからなかったが以下のページ( http://www.opengl.org/sdk/docs/man/xhtml/gluPerspective.xml )に gluPerspective の定義の ようなものを見つけた。やはり、クリッピング面までの距離は正で与えられる前提 のようだ。
↓
near と far は共に正という制約はあるらしい.

<行列スタックの使い方>
・最後の画角とクリッピング面の効果の所でスタックの働きについて考察しようと思い ましたが、 いまいちどのように働いているのかがわからずじまいでした・・。 また、複 数のスタックにそれぞれ複数の行列を入れて後で1つずつ取り出して利用するプログ ラムが 書ければ面白いと思い 2 時間位試行錯誤しましたが、結局考察できるだけの プログラムは 書けませんでした
・glPushMatrixやglPopMatrixで行列を複製して保存したり、回復するとい う操作の意味が分かりませんでした。
・因みに質問なのですが、gl.glPushMatrixとgl.glPopMatrix の使い方がまだよくわかりません。設定対象の行列はどこで指定しているのでしょ うか。
・なぜOPGLは後から適用される変換行列から先に乗じていくのか先に適用さ れる変換行列から先に乗じて行く方が直感的に分かりやすくてしかもスタッ クに複製する際も便利なように思えた。
 ↓
第13章の円錐 16個のプログラムで,pushMatrix, popMatrixの利用法が少しわかるのではないだろうか?

・行列をスタックに記録しておくことで行列を合理的に扱える。l59 にあるよ うにスタックに保存しているわけだが、ポップした後にスタックからは消えている (教科書p.81)。ポップしてもコピーするだけでスタック内に保持したままにして おいたりはできないのだろうか。それとも、スタック内にとっておくべき行列がか わったときのためにはこの方がプログラムがシンプルにすむからなのだろうか。
↓
ポップして取り出すときにコピーとすると行列が溜まり続けてしまう.必要なものは改めてプッシュすれば良い.

<画像ファイルの変換>
・前回と同様、グラブの TIFF を PNG に変換するのが面倒だった。TIFF を PNG に変換するコマンドは ないのでしょうか。
↓
ECCSでは convert コマンドがある.
$ convert hoge.tiff hoge.png
とすれば,pngファイルを作ってくれる.また,(bashで)一気に変換するには,以下のようにすれば良い.
$ for i in *.tif
> do
> convert $i ${i%tiff}png
> done