_Graphics/2014/ex11
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*グラフィックス基礎・演習 2014年度 第11回 [#e9701092]
#contents
//&color(#ff0000){工事中};
**課題A(TA) 締切: 今回の演習開始60分後 [#kadaiA]
この課題の解答は講義時に配布した用紙に記入し,TAさんに提出してチェックを受けてください.
[[MyGraph.java>Graphics:MyGraph.java]]
上記のリンク先のJavaソースファイルをダウンロードしてコンパイルし,動作を確認しなさい.
このプログラムは,横軸 x,縦軸 y で y = f(x) のグラフを描くものである.
***問1 [#t250cc2a]
以下の図は,上記のプログラムによって描画されるウインドウである.
図の点Aと点Oの座標は,このグラフィックスを描いているコンポーネントの座標(ピクセル単位)では (0,0) と (150, 150) であるが,グラフの (x,y) の値としてはいくつに相当するか答えなさい.
&ref(http://www-tlab.math.ryukoku.ac.jp/~takataka/course/Graphics/MyGraph-coor.png);
***問2 [#a1f258ac]
このソースファイル中の[問2]に対する答えを書きなさい.
***問3 [#e918a93d]
このソースファイル中の[問3]に対する答えを書きなさい.
***問4 [#ieef924b]
グラフが下図のようになるようにソースファイル中の[問4]の部分を変更し,どのように変更したか書きなさい.
ただし,[問4]の指示に従うこと.
&ref(http://www-tlab.math.ryukoku.ac.jp/~takataka/course/Graphics/MyGraph-q4.png);
**課題B(self) 完成目標: 今回の演習終了時 [#kadaiB]
下図のような表示ができるプログラムを作成しなさい(G11Dora).
サイズは 300 x 300 ピクセルとすること.
厳密に下図を再現する必要はないが,下図の構成要素を省略したり単純化(例:頭の形をただの長方形にするなど)したりしないこと.
時間があればいろいろ書き足したり工夫すればよい.
すてきな絵ができたらぜひ高橋に見せてください.
画像として保存したい,という人は [[Graphics/FAQ#capture]] へどうぞ.
&ref(http://www-tlab.math.ryukoku.ac.jp/~takataka/course/Graphics/G11Dora.png);
//&ref(Graphics:G11DoraTA.png);
//TAさん作
&color(white,blue){check};
- &size(8){ これはいったい誰でしょう? (1) ドラエモン (2) トラえもん (3) ドラ之もん (4) どらえもん (5) どらエモソ};
- 頭や目を描くのに使うメソッドが「引数でどこの座標を指定するのか」をちゃんと把握した上で,紙の上で大まかな配置と座標を考えてからプログラミングを始めることを強く勧めます
- 図形を描く順番をよく考えよう.上の例では鼻は…
- 目をきれいに描くには,&color(white){ 同じ大きさの楕円を,白塗りつぶし → 黒輪郭線のみ の順で描く }; ようにするとよいでしょう
**課題C(self) 完成目標: 次回授業開始前 [#kadaiC]
前回でてきたGUIのプログラムは,講義で説明したものも演習で作成したものもすべて,JPanelを拡張したクラスとして作成していた.
JPanelはコンテナであるから,他のコンテナに入れることができる.
そこで,
-前回の課題AのG10exAクラス
-前回の課題BのG10exBFlowクラス
-前回の課題BのG10exBGridクラス
の3つのコンポーネントをこの順に縦にならべて表示するプログラムを作成しなさい(G11exC).
ただし,背景色を個別に設定すること.
時間があれば,他のものも追加でならべてみるとよい(G11Doraとか).
縦にならべるやり方は複数ある.2つ以上のレイアウト方式を試してみること(コメントとして残しておこう).
//&ref(Graphics:G11exA-pics2.png);
//&ref(Graphics:G10exA-pics2.png);
&color(white,blue){check};
>
背景色を個別に変えるには,G10exA, G10exBFlow, G10exBGrid それぞれのインスタンスに対してインスタンスメソッド &color(white){ setBackground }; を呼べばよい.
これら3つのクラスではこのインスタンスメソッドを定義していないのに使える理由は,これら3つのクラスが &color(white){ JPanel }; クラスのサブクラスで,そこから上記メソッドを&color(white){ 継承 };しているからである(さらにいうと,上記メソッドはJComponentクラスで定義されており,&color(white){ JPanel }; クラスもそこからこのメソッドを継承している).
<
>
2つ以上のレイアウト方式を試しましたか? BorderLayout だけじゃなく,&color(white){ GridLayout }; や &color(white){ BoxLayout }; で縦にならべる方法も試してみよう.
<
**課題S(おまけ) [#f11640ae]
以前作った Complex2 クラスと上記課題の G11Dora クラスを利用して,複素平面に複素数の値を点として描くことのできるプログラムを作成しよう(G11ComplexPlane).
ただし,次のような仕様とする
-G11ComplexPlaneは,G11Doraのサブクラスとする
-描画領域の大きさは 300 x 300 ピクセルとする
-描画領域の真ん中が原点,左上が &jsmath(-150+150i);,右下が &jsmath(150-150i);
-次式で &jsmath(N=5); とおいて計算される5点 &jsmath(z_{0},z_{1},z_{2},z_{3},z_{4}); を描く(乗算メソッドを使おう)
#jsmath( \left\{ \begin{array}{ll} z_{0} = 100 & \\ z_{n} = a \times z_{n-1}\qquad & (n = 1, 2, \ldots , N-1) \end{array} \right.);
#jsmath( a = \cos{\frac{2\pi}{N}} + i\sin{\frac{2\pi}{N}} );
実行結果は下図のようになる.
利用するクラスファイルを同じディレクトリに置かないといけないことに注意.
Nは変数として(またはコマンドライン引数で与えて)いろいろ変えられるようなプログラムにしよう.
&ref(http://www-tlab.math.ryukoku.ac.jp/~takataka/course/Graphics/G11ComplexPlane.png);
//&ref(Graphics:G10ComplexPlane.png);
終了行:
*グラフィックス基礎・演習 2014年度 第11回 [#e9701092]
#contents
//&color(#ff0000){工事中};
**課題A(TA) 締切: 今回の演習開始60分後 [#kadaiA]
この課題の解答は講義時に配布した用紙に記入し,TAさんに提出してチェックを受けてください.
[[MyGraph.java>Graphics:MyGraph.java]]
上記のリンク先のJavaソースファイルをダウンロードしてコンパイルし,動作を確認しなさい.
このプログラムは,横軸 x,縦軸 y で y = f(x) のグラフを描くものである.
***問1 [#t250cc2a]
以下の図は,上記のプログラムによって描画されるウインドウである.
図の点Aと点Oの座標は,このグラフィックスを描いているコンポーネントの座標(ピクセル単位)では (0,0) と (150, 150) であるが,グラフの (x,y) の値としてはいくつに相当するか答えなさい.
&ref(http://www-tlab.math.ryukoku.ac.jp/~takataka/course/Graphics/MyGraph-coor.png);
***問2 [#a1f258ac]
このソースファイル中の[問2]に対する答えを書きなさい.
***問3 [#e918a93d]
このソースファイル中の[問3]に対する答えを書きなさい.
***問4 [#ieef924b]
グラフが下図のようになるようにソースファイル中の[問4]の部分を変更し,どのように変更したか書きなさい.
ただし,[問4]の指示に従うこと.
&ref(http://www-tlab.math.ryukoku.ac.jp/~takataka/course/Graphics/MyGraph-q4.png);
**課題B(self) 完成目標: 今回の演習終了時 [#kadaiB]
下図のような表示ができるプログラムを作成しなさい(G11Dora).
サイズは 300 x 300 ピクセルとすること.
厳密に下図を再現する必要はないが,下図の構成要素を省略したり単純化(例:頭の形をただの長方形にするなど)したりしないこと.
時間があればいろいろ書き足したり工夫すればよい.
すてきな絵ができたらぜひ高橋に見せてください.
画像として保存したい,という人は [[Graphics/FAQ#capture]] へどうぞ.
&ref(http://www-tlab.math.ryukoku.ac.jp/~takataka/course/Graphics/G11Dora.png);
//&ref(Graphics:G11DoraTA.png);
//TAさん作
&color(white,blue){check};
- &size(8){ これはいったい誰でしょう? (1) ドラエモン (2) トラえもん (3) ドラ之もん (4) どらえもん (5) どらエモソ};
- 頭や目を描くのに使うメソッドが「引数でどこの座標を指定するのか」をちゃんと把握した上で,紙の上で大まかな配置と座標を考えてからプログラミングを始めることを強く勧めます
- 図形を描く順番をよく考えよう.上の例では鼻は…
- 目をきれいに描くには,&color(white){ 同じ大きさの楕円を,白塗りつぶし → 黒輪郭線のみ の順で描く }; ようにするとよいでしょう
**課題C(self) 完成目標: 次回授業開始前 [#kadaiC]
前回でてきたGUIのプログラムは,講義で説明したものも演習で作成したものもすべて,JPanelを拡張したクラスとして作成していた.
JPanelはコンテナであるから,他のコンテナに入れることができる.
そこで,
-前回の課題AのG10exAクラス
-前回の課題BのG10exBFlowクラス
-前回の課題BのG10exBGridクラス
の3つのコンポーネントをこの順に縦にならべて表示するプログラムを作成しなさい(G11exC).
ただし,背景色を個別に設定すること.
時間があれば,他のものも追加でならべてみるとよい(G11Doraとか).
縦にならべるやり方は複数ある.2つ以上のレイアウト方式を試してみること(コメントとして残しておこう).
//&ref(Graphics:G11exA-pics2.png);
//&ref(Graphics:G10exA-pics2.png);
&color(white,blue){check};
>
背景色を個別に変えるには,G10exA, G10exBFlow, G10exBGrid それぞれのインスタンスに対してインスタンスメソッド &color(white){ setBackground }; を呼べばよい.
これら3つのクラスではこのインスタンスメソッドを定義していないのに使える理由は,これら3つのクラスが &color(white){ JPanel }; クラスのサブクラスで,そこから上記メソッドを&color(white){ 継承 };しているからである(さらにいうと,上記メソッドはJComponentクラスで定義されており,&color(white){ JPanel }; クラスもそこからこのメソッドを継承している).
<
>
2つ以上のレイアウト方式を試しましたか? BorderLayout だけじゃなく,&color(white){ GridLayout }; や &color(white){ BoxLayout }; で縦にならべる方法も試してみよう.
<
**課題S(おまけ) [#f11640ae]
以前作った Complex2 クラスと上記課題の G11Dora クラスを利用して,複素平面に複素数の値を点として描くことのできるプログラムを作成しよう(G11ComplexPlane).
ただし,次のような仕様とする
-G11ComplexPlaneは,G11Doraのサブクラスとする
-描画領域の大きさは 300 x 300 ピクセルとする
-描画領域の真ん中が原点,左上が &jsmath(-150+150i);,右下が &jsmath(150-150i);
-次式で &jsmath(N=5); とおいて計算される5点 &jsmath(z_{0},z_{1},z_{2},z_{3},z_{4}); を描く(乗算メソッドを使おう)
#jsmath( \left\{ \begin{array}{ll} z_{0} = 100 & \\ z_{n} = a \times z_{n-1}\qquad & (n = 1, 2, \ldots , N-1) \end{array} \right.);
#jsmath( a = \cos{\frac{2\pi}{N}} + i\sin{\frac{2\pi}{N}} );
実行結果は下図のようになる.
利用するクラスファイルを同じディレクトリに置かないといけないことに注意.
Nは変数として(またはコマンドライン引数で与えて)いろいろ変えられるようなプログラムにしよう.
&ref(http://www-tlab.math.ryukoku.ac.jp/~takataka/course/Graphics/G11ComplexPlane.png);
//&ref(Graphics:G10ComplexPlane.png);
ページ名: