<同次座標に関して> ・同次座標が説明されたが、参考書を読んでいると、これは実は2DCGでも適 応できたこと発見 ↓ 教科書の同次座標の導入では,一般のn次元を表す方法として書いてあったはずで,もちろん2次元の同次座標表現もある. <透視投影について> ・教科書p.80 の透視投影行列について、投影先の最終的なz座標がd-(1/z)となっている ↓ 授業で話したはずだが,投影後も奥行きの前後関係を保存する必要があるために,このような行列を用いる. <同次座標のwと透視投影> ・CubeMatrix.javaにおけるtranslate行列の(4,4)成分を少し大きくしても描画図形が変わ らず、7.0以上になると手前から図形が欠けていくようになったが、これがなぜなの か分からなかった ↓ translate行列の(4,4)成分を大きくすることは,同次座標のw成分を大きくすることに相当する.これが透視投影に与える影響を考えると,教科書 p.80 の透視投影の式で [x y z 1]^T とあるところが [x y z w]^T となり w の値を大きくしたことに相当する.結果として変換後の x,y成分は変化せず,z成分が d - w/z となることがわかる.つまり奥行きの z 成分が小さくなり前方クリッピング面と干渉する.w を小さくすれば,後方クリッピング面と干渉するので試してみるとよいだろう. <広角レンズの効果> ・広角レンズによって写していることになるので、ゆがみが大きく出てもおかしくないと思う ・魚眼レンズのような効果を得ようと試 みた ↓ 広角レンズに伴う歪みは周辺部に現れる.具体的には,第14章の章末課題で扱う. <JOGLのAPI仕様> JOGLのAPI仕様は http://worldwind.arc.nasa.gov/java/jogl/docs/ http://jogamp.org/deployment/jogamp-next/javadoc/jogl/javadoc/ などで調べることができる. <glRotatefの仕様> ・glRotatef の引数について、 1つめが角度の大きさ、2つめが x 軸を指定、3 つめが y 軸を指定、4 つめが z 軸を指定するものだと解釈した ・glRotatef関数で、成分ごとに比率を決めることができる ↓ glRotatefの第1引数は回転角だが,第2引数以降は回転軸の方向ベクトルを表している. <画角について> ・(画角の指定について)180 に関してはよくある質問コーナーの通りである。0 に関してはよくある質問コーナーのところでは見えると書いて あったが見えなかった ・画角450°の画像 ↓ 0度や180度という指定は,仕様外の設定なので,何が起きるか保証されていない(環境やライブラリ依存である) ・ウィンドウのサイズ変更を行う とき、縦に大きさが変化すると中の立体もあわせて拡大、縮小するのに、横の変化 に対しては何の反応もなかった ↓ gluPerspective で指定する fieldOfView は p.75 の説明にもあるように,縦(y)方向の角度だからである. <クリッピング面について> ・near=10, far=1という指定を行ってしまった ・前後のクリッピング面の位置を一致させてみた. ・前方クリッピング面の位置を 0や負の値にしてみた. ↓ クリッピング面の位置について仕様では 0 < 前方クリッピング面 < 後方クリッピング面 となることを前提としているので,その振舞は保証されていない(環境やライブラリ依存である) <JOGL/OpenGLにおける行列の指定> ・displayメソッド中でrotateする前にgl.glMatrixMode(GL.GL_MODELVIEW); と 書かなくても良いのだろうかと思った ↓ その前に実行された reshape での設定が有効となっている <JOGL/OpenGLの行列の扱い> ・列優先や右から行列演算をする理由やメリットなどについて教えていただきたいです ↓ 右からの行列演算については,行列スタックを用いて,全体と部品の関係を表すのに適しているためで,教科書p.81の説明や第13章のプログラムの複数円錐のプログラムなどを試すと効果がわかるだろう.列優先については歴史的なものが大きいと思う.ただ本来は,サイズ16の1次元配列であり,プログラムにおいて4行4列で書いてしまうと転置しているように見えるだけであり,1次元配列の中では平行移動の成分が最後にまとまっているのは自然と言えば自然だろう.