<レポートに対する注意事項> レポートのプログラムが「<」,「>」のせいで途中で切れてしまっている人が見かけられる.「<」や「>」を用いること.また,何よりも提出前に一度全体を確認してから提出すること.今回は javaファイルなどを確認したが,評価はレポートのPDFファイルに対して行なうので,今後は注意してもらいたい. <授業の進め方について> ・教科書には 19 章までありますが、毎週 1 章ずつ進むのでしょうか。 ・授業では教科書のどのへんまで扱う予定 なのでしょうか? 一時間一章のペースでは授業時間が足りないと思うのですが、飛ばしたり、一時間 に二章以上やることもあるのでしょうか? ↓ 概ね,そのペースで進む予定である.ただし,途中の章を飛ばすこともある.おそらく第7,9章は扱わない.残念ながら,最後までは到達できないが,第15章か第16章くらいまで進みたいと考えています. ・各章の導入の部分の説明はもっと手短にでもよいので,プログラムの説明にもう少し時間をかけてほしいです。 ↓ プログラミングの授業ではなく,グラフィクスプログラムの背景にある考え方の授業なので,導入こそが重要だと考えています.たとえば,三原色や表色系の話は,それなりに意味があると思うのですが… ・教科書の内容をいちいち丸写しすることが面倒に感じてしまうことがある。 ・例題プログラムを打ち込むのは非常に手間 問題プログラムだけにしてほしい ・課題はとにかく量が多い気がします。ただ、それだけにコードを書く量が増えてよい、と考えることにします・・・。 ↓ 実際にプログラムを丁寧に追いかけないと理解はできません.また多くの章末問題は例の発展になっているので,プログラムを入力することは理解に欠かせないと思います. ・本当は例題を打たなくてもいいようにしてほしい、といおうと思っていたが、今回課題をやる上で例題をちゃんと読み込んでいたから何をすればいいのかわかった。 ・章末問題が例を少しいじるだけで完成してしまうので、自分で本当に一からプログ ラムを立ち上げることができるのかわからない。 ・教科書に載っているプログラムは何章か先のものまで入力してみましたが、特にフ ラクタル図形の表示には感動しました。 ↓ という感想もありました. ・色について目の構造までやったのが面白かったです。 ・単に表面的なプログラミングのことだけではなく、 その背後にある色の考え方などの部分にも触れられるのは うれしく思います。 ・減法混色というものの存在を今まで知らなかったので興味深かったです。 ・波長によって色が変わること、RGBの三色の足し合わせですべての色を再現できる ことはそれぞれ知ってはいたが、この2つがどう結びつくかは考えてみたことがなかっ たので、今回の授業は面白かった。 ↓ という感想もありました. <AdditiveColorやColorDiskの実行に関して> ・描画が完全に完了せず画面の下部がグレーになる現象がよく見られた。毎回発生する現象ではないことから、 javaのpaintイベントそのものの仕様に起因するものと思われる。 ・家でも学校のパソコンでもどうしても下の方が切れた画像がでてしまいました。 ・画像下部が灰色 になることが多かった。 ↓ ウィンドウ下部がグレーになるのはjavaの仮想機械の不具合と思われます (書いたプログラムの不具合ではありません). <色相円盤について> ・(色相円盤のプログラムで)ベンツのマークみたいなのが浮き上がって見える。 ・(色相円盤のプログラムで)赤、青、緑の境界にうっすらと白い線のようなものが見えるのが気になる。 ↓ CMYは(2つの原色が重なっているので)RGBに比べて明度が上がってしまうためである. <色について> ・人間の可視光域の色相は一巡できるのが不思議に感じた。 ↓ 赤から赤紫,紫,青への変化は赤 (長波長光)と青(短波長光)との合成によって作られ, この間だけは単波長光が対応していません. ・赤から紫にかけての変化は光の波長が短くなるように並べられているのに、 紫(マゼンタ)から赤へ違和感なくつながることが不思議に思われた ↓ (過去のコメントにも簡単な説明があるが,改めてコメントする) 赤→黄→緑→シアン→青の変化は長波長から短波長への変化とみなせるが, 青→マゼンタ→赤の変化は単波長光とは対応づけられない. 青に見える短波長の光と赤に見える長波長のとを割合を変えながら混合した際の連続な変化と考えれば良い. <等色と条件等色> ・光のみを考えたときには「条件等色」とは言わず「等色」と呼ぶ. 物体が絡んでくると,照明光の性質に応じて物体の反射光が等色することがある. つまり,照明光という条件によって等色する場合に「条件等色」という用語を用いる. <表色系について> ・なぜ RGB 表現が使われるのか、RGB 表現の長所とは何なのか. ↓ 授業でも説明したと思うが,モニタやプロジェクタは光の三原色を組み合せて色を作っており,RGB表現が対応している. 一方,カラーフィルタやインクなどの光の透過や反射で色を作る場合には,CMYやCMYKの方がより対応していると言える. <RGBとCMYについて> ・CMYとRGBが混在している意味は良く分からない。 ↓ プリンタは減法混色に近い発色をしているために,CMYKを利用している. 現実と計算機内表現は近くできるならば,近くした方が良い. <CMYとCMYKについて> ・RGB と CMY との関係が出てきたがプリンタや一部ソフトウェア (Adobe Illustrator など) の CMYK はどうなっているのだろうか. ↓ ウェブなどで調べればすぐにわかると思うが,黒をきれいに発色させるために黒インクを使う必要があり, そのための表色系と考えて良いでしょう. <HSBについて> ・例2のColorRingRGBと全く同じであるように見えた。 もし全く同じであるならば、HSB表現では明度を常に1に設定しているのに対し、 RGBではR,G,B成分の合計値が1から2までの間を遷移しているのに、 それにも拘らずRGB表現で描いた色相円も常に明度が1であるというのは なぜなのだろうかと疑問に思った。 ・グレースケール画像にすると,青,赤,緑では濃さに違いがあることである. 目で見ても青は緑より黒に近いような気がする. ↓ HSB表現の明るさ(Brightness)は相対的なものであり,当該の色相(と彩度)で出せる最大の明るさが 1 になっています. したがって,明度1の青と明度1の白とでは,見た目の(実際に感じられる)明るさは大きく異なります. ヒトの目は同じエネルギでも,緑色を明るく,赤や青は暗く感じます. ヒトの目の性質を考えて明るさを表現するには,photometry (測光法) に基づいた CIE-XYZ の Y値や, CIE-Lav, CIE-Luv の L値 (Luminance) を用いなくてはなりません. <Color.getHSBColor の h,s,b の範囲について> ・ColorDisk.javaでif (s > 1.0f) s = 0.0f; は消しても変化は感じられず、必要ないのではと思った ↓ プログラムの仕様では sの範囲は 0以上 1以下となっており, その範囲にする方が行儀良い(実行結果がどうなるかは定まっていない). 明度 b の範囲も同様であり,実行結果の保証はない. <g.setColorについて> ・g.setColor は HSB 値になぜ float 値を取らなければいけないのかがわからなかった。 ↓ 仕様だからだが,int型ではダメというのは当然と言えば当然… ・色を設定するメソッドの引数の値域は自由に決められるのでしょうか?今回は0~1でしたが、 以前自分が個人的にプログラミングをやったときは0~256でやっていました。 ↓ プログラムの仕様で決まっている. 0〜255(256ではない)を使う場合には,RGBが各8bitで表現される場合に用いられる. <atan2について> ・Math.atan2(dy, dx) / (2.0 * Math.PI)をMath.atan(dy/dx) / (Math.PI)のように 変えたところ色彩の変化が反周期で起こった。上二式の違いを教えてください。 ↓ 授業中にも簡単に説明したと思うが,atan2は x, y の符号から, -Math.PI から Math.PI の範囲の値を返すことができます. atan は単なる arc tangent なので,-Math.PI/2.0 から Math.PI/2.0 の値となります. <線の太さについて> ・(線を)太く描画すると方法というものはないのか? ↓ JOGLになると,gl.glLineWidth(lineWidth) というメソッドで制御できるが,awtでは無理です. <jarファイルについて> ・jarコマンドを用いて複数ファイ ルをまとめた後、jarファイルを用いたプログラムの実行を行おうとしても、 以下の ようなメッセージが出て、描画する事ができません。 cm10101$ jar cf report03-g9xxxxx.jar AdditiveColor.java AdditiveColor.class ColorRingRGB.java ColorRingRGB.class ColorDisk.java ColorDisk.class … cm10101$ java -cp report03-g9xxxxx.jar AdditiveColor Exception in thread "main" java.lang.NoClassDefFoundError: AdditiveColor$1 ↓ AdditiveColor$1 Class の Definition が見つからないというメッセージのとおり.jarファイルにはすべてのクラスファイルを入れないといけません. <Javaのプログラミングについて> ・0.0fなどのfの意味がいまいちわからなかった。 ・「1.0f」「0.0f」は、なぜfがついて いるのでしょうか。10進法でない値であったりするのでしょうか。 ↓ 0.0f は float 型の 「0.0」のこと.fをつけないと double型の「0.0」になります. 実際には,どちらでもプログラムは走る.これも行儀良さを気にしたせいです. ・colorRingRGB.javaの18行目 (以下の行)の理由・意義がよくわかりません。 protected Color[] colors; ↓ ここでは配列へのポインタだけが作られており,配列の実体がない.実際に配列のメモリ領域は,そのあとの, colors=new Color[numberOfPoints+1]; という行で作られている.これらのプログラムでは,配列の大きさが事前に決まっているわけでなく, コマンド引数で与えられた数値に応じて,必要な分だけメモリ領域を確保しています. ・例題のプログラムの文法でわからないことがある. ↓ 具体的に質問しないと,答えようがない.もちろん授業中でもかまいません.