Top / Graphics / 2016 / ex11

グラフィックス基礎及び実習 2016年度 第11回 [edit]

課題A(self) 完成目標: 今回の実習終了まで [edit]

前回でてきたGUIのプログラムは,講義で説明したものも演習で作成したものもすべて,JPanelを拡張したクラスとして作成していた. JPanelはコンテナであるから,他のコンテナに入れることができる. そこで,

の3つのコンポーネントをこの順に縦にならべて表示するプログラムを作成しなさい(G11exA). ただし,背景色を個別に設定すること(色はお好みで). 時間があれば,他のものも追加でならべてみるとよい(↓のG11Doraとか).

縦にならべるやり方は複数ある.2つ以上のレイアウト方式を試してみること(コメントとして残しておこう).

check

背景色を個別に変えるには,G10exA, G10exBFlow, G10exBGrid それぞれのインスタンスに対してインスタンスメソッド  setBackground  を呼べばよい. これら3つのクラスではこのインスタンスメソッドを定義していないのに使える理由は,これら3つのクラスが  JPanel  クラスのサブクラスで,そこから上記メソッドを 継承 しているからである(さらにいうと,上記メソッドはJComponentクラスで定義されており, JPanel  クラスもそこからこのメソッドを継承している).

2つ以上のレイアウト方式を試しましたか? BorderLayout だけじゃなく, GridLayout  BoxLayout  で縦にならべる方法も試してみよう.

課題B(TA) 締切: 次回実習開始直後 [edit]

MyGraph.java

上記のリンク先のJavaソースファイルをダウンロードしてコンパイルし,動作を確認しなさい. このプログラムは,横軸 x,縦軸 y で y = f(x) のグラフを描くものである. さらに,次の問の答えをソース中の指定の場所にコメントとして書き入れなさい

問1 [edit]

このプログラムを変更せずにそのまま実行すると,以下ようなウィンドウが描画される. 図の点Aと点Oの座標は,このグラフィックスを描いているコンポーネントの座標(ピクセル単位)では (0,0) と (150, 150) であるが,グラフの (x,y) の値としてはいくつに相当するか答えなさい.

MyGraph-coor.png

問2 [edit]

このプログラムを変更せずにそのまま実行した場合,main メソッドで宣言されているインスタンス h の4つの変数 width, height, xmax, ymax はそれぞれいくつになっているか答えなさい.例えば,円周率の -3倍の値であるなら,コメントには「 -3pi 」のように表記すればよい.

問3 [edit]

このソースファイル中の[問3]の下にある for 文のブロックは何をしているか.

問4 [edit]

グラフが下図のようになるようにソースファイル中の[問4]の部分を変更しなさい. ただし,[問4]の指示に従うこと.

MyGraph-q4.png

課題C(takataka) 締切: 次回実習開始直後 [edit]

G11DoraSample.class

上記リンク先のクラスファイルをダウンロードして実行しなさい.すると,下図のような表示がされるはずである.これと同じことのできるプログラムを作成しなさい(G11Dora). サイズは 300 x 300 ピクセルとすること. 図形の形や位置は厳密にサンプル通りでなくてもよいが,図の構成要素を省略したり単純化(例:頭の形をただの長方形にするなど)したりしないこと. 時間があればいろいろ書き足したり工夫すればよい.

完成したら高橋に見せること. 画像として保存したい,という人は Graphics/FAQ#capture へどうぞ.

G11Dora.png

check

  • 頭や目を描くのに使うメソッドが「引数でどこの座標を指定するのか」をちゃんと把握した上で,紙の上で大まかな配置と座標を考えてからプログラミングを始めることを強く勧めます
  • プログラムのどの部分がどこを描いているのかわかりやすいように,詳しいコメントをつけておこう
  • 図形を描く順番をよく考えよう.上の例では鼻は…
  • 目をきれいに描くには, 同じ大きさの楕円を,白塗りつぶし → 黒輪郭線のみ の順で描く ようにするとよいでしょう
  • これはいったい誰でしょう? (1) ドラエモン (2) トラえもん (3) ドラ之もん (4) どらえもん (5) どらエモソ

課題S(おまけ) [edit]

以前作った Complex2 クラスと上記課題の G11Dora クラスを利用して,複素平面に複素数の値を点として描くことのできるプログラムを作成しよう(G11ComplexPlane).

ただし,次のような仕様とする

  • G11ComplexPlaneは,G11Doraのサブクラスとする
  • 描画領域の大きさは 300 x 300 ピクセルとする
  • 描画領域の真ん中が原点,左上が \( -150+150i \),右下が \( 150-150i \)
  • 次式で \( N=5 \) とおいて計算される5点 \( z_{0},z_{1},z_{2},z_{3},z_{4} \) を描く(乗算メソッドを使おう)
\[ \left\{ \begin{array}{ll} z_{0} = 100 & \\ z_{n} = a \times z_{n-1}\qquad & (n = 1, 2, \ldots , N-1) \end{array} \right. \]
\[ a = \cos{\frac{2\pi}{N}} + i\sin{\frac{2\pi}{N}} \]

実行結果は下図のようになる. 利用するクラスファイルを同じディレクトリに置かないといけないことに注意. Nは変数として(またはコマンドライン引数で与えて)いろいろ変えられるようなプログラムにしよう.

G11ComplexPlane.png


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-06-24 (金) 15:49:23 (1035d)