グラフィックス基礎及び実習 2019年度 実習第4回 †[edit]注意とおしらせ †[edit]
課題A(self) 完成目標: 今回の実習終了まで †[edit]
check 次の文の空欄に入る言葉を答えなさい(白字で書いてあるので,当該箇所をマウスカーソル使って選択すると...).行番号は,講義資料に記載のものに合わせてある(行を追加するとずれるので注意).
課題B(self) 完成目標: 今回の実習終了まで †[edit]![]() 上記に示すソースプログラムに関する次の問題に解答しなさい. 実際にプログラムを作成&実行して修正を加えながら解答すること.解答はノートに書いたりソース中にコメントをつけたりする形で残しておくこと.
課題C(TA) 締切: 次回実習開始直後 †[edit]★ HogeTurtleクラスのAPI仕様 HogeTurtleは,Turtleを拡張したクラス(「拡張したクラス」とはどういう意味かは次回学びます).
step0 †[edit]
step1 †[edit]G04HogeTurtle.java の 12, 15, 16行目にそれぞれ m1, m2, m3 のインスタンスメソッドを呼び出す文を書き,動作を確認しなさい.ただし,ここで呼ぶインスタンスメソッドは上記の HogeTurtle クラスのAPI仕様に示されたものとする. step2 †[edit]G04HogeTurtle.java の10,11行目にそれぞれ m2, m3 のインスタンス変数に値を代入する文を書き,動作を確認しなさい.ただし,m2 のやる気が 2 に,m3 のやる気が 0 になるようにすること. step3 †[edit]G04HogeTurtle.java の13行目にクラスメソッドを呼び出す文を書き,動作を確認しなさい.ただし,かめ全員のやる気が +3 されるようにすること. step4 †[edit]G04HogeTurtle.java の14行目にクラス変数に値を代入する文を書き,動作を確認しなさい.ただし,かめ全員のペンの色が虹色になるようにすること. 課題S(おまけ) †[edit]import tg.*; public class G04Graph{ // クラス変数の宣言と初期化 public static final int WIDTH = 500; public static final int HEIGHT = 500; public static double XMAX = 1.0; public static double YMAX = 1.0; // 描画する関数 public static double f(double x){ return x*x; } // ピクセル単位のx座標の値(左端が0,右端がWIDTH)を // グラフのx座標の値(真ん中が0,左端が -XMAX,右端がXMAX)に変換 public static double toGraphX(int pixelX){ return XMAX * (double)(pixelX - WIDTH/2) / (WIDTH/2); } // グラフのy座標の値(真ん中が0,上端が YMAX,下端が-YMAX)を // ピクセル単位のy座標の値(上端が0,下端がHEIGHT)に変換 public static int toPixelY(double graphY){ return (int)(-graphY / YMAX * (HEIGHT/2)) + HEIGHT/2; } // mainメソッド public static void main(String[] args){ TurtleFrame f = new TurtleFrame(WIDTH, HEIGHT); Turtle m = new Turtle(); f.add(m); m.speed(5); // X軸を描く m.up(); m.moveTo(0, HEIGHT/2); m.down(); m.moveTo(WIDTH - 1, HEIGHT/2); // Y軸を描く m.up(); m.moveTo(WIDTH/2, 0); m.down(); m.moveTo(WIDTH/2, HEIGHT - 1); // 曲線を描く for(int px = 0; px <= WIDTH; px += 5){ double x = /* (a) px に対応するグラフの x 座標の値を求める */; int py = /* (b) グラフの y 座標の値を求め,それをピクセル単位の y 座標の値に変換する */; if(px == 0){ m.up(); m.moveTo(px, py); m.down(); }else{ m.moveTo(px, py); } } } }
![]() 少しFrameからはみ出すせいでかめは本当はスクロールバーに隠れるのだが,わかりやすくするためにウィンドウ幅を広げてキャプチャしてある.本当は,Frame の少し内側の領域だけに描画するように工夫するとよい. |