グラフィックス基礎及び実習 2021年度 第04回 実習と宿題 †[edit]実習課題A 締切: 当日15:15 †[edit]以下のことをやって,作ったソースファイルを moodle の該当の場所へ提出してください. ファイル名の間違いに注意 次のことをやりなさい.
実習課題B 締切: 当日16:10 †[edit]以下のことをやって,作ったソースファイルを moodle の該当の場所へ提出してください. ファイル名の間違いに注意 ★ HogeTurtleクラスのAPI仕様 HogeTurtleは,Turtleを拡張したクラス(「拡張したクラス」とはどういう意味かは次回学びます).
step0 †[edit]
VSCode で表示したソースコード中の HogeTurtle に赤い波線が引かれて注意されるかもしれません.これが出ないように VSCode を設定することもできますが,込み入った変更になるため,この授業の Setup では説明していません.気にしないで構いません. 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行目にクラス変数に値を代入する文を書き,動作を確認しなさい.ただし,この行以降はかめ全員のペンの色が虹色になるようにすること. step5 †[edit]19行目にコメントとして自分の名前と学籍番号を記し,できたプログラムのソースファイルをこの科目の Moodle コース上の当該の場所へ提出しなさい. 宿題 †[edit]次回授業までに必ずやっておくこと 次回の授業の資料(PDFや動画)等は こちら からどうぞ.
実習課題S(omake) 締切: 次回実習時間終了時 †[edit]これはおまけ課題です.やらなくても減点になりません.やったら加点かも 作ったソースファイルを moodle の該当の場所へ提出してください. 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 の少し内側の領域だけに描画するように工夫するとよい. |