Javaプログラミング 第13回 2005/12/1
サインカーブを描くプログラムを作る
サインの計算法
- 角度を0度から360度まで、forループなどを使い一定の間隔で変化させ、sin関数の値を計算する。
int k; for(k = 0; k <= 360; k+=10){ ... }
double r = Math.PI/180 * k; double y = Math.sin(r);
- サインの値はー1〜1の範囲なのでグラフ化するには範囲が小さすぎるため、100などの数値をかけて大きな値にする
y = y * 100;
- グラフ化するには座標値は整数でなければならないのでキャストなどで計算結果を整数化する。
int Y = (int)y;
- y座標は下向きが+なので変換が必要.y=0の位置を下げ、サインの値をそこから引く
int Y = 200 - (int)y;
drawLineを使って描画
JavaのdrawLine()メソッドは4つの引数を指定する。
drawLine(x1, y1, x2, y2)
- 2つの座標データ(x1,y1)と(x2,y2)が必要
- 1つは直前の座標
- もう1つが今、計算で得た座標
- 直前の座標はグラフを描いた直後に現在の座標値を代入しておく
pX = x; pY = y;
- 描きはじめの直前の座標は今計算で得た座標と同じにする
if(k == 0){ px = x; py = y; }
演習
配布したプリントのプログラムが正しく動作するように穴を埋める。
- 角度はxで0から360度までを10度刻みで変化させる(ループ(反復)はfor文です。)
- 角度xをそのままx座標で使用する
- x0、y0は直前の座標用
配布したプリント drawSin.java(816)
コサインカーブを描くプログラムを追加する。コサイン描画用ボタンを追加する。
- サインカーブの描画に関係する部分をコピーし、sinをcosに変える。
x、y軸に目盛りをつける
- x軸 0、180、360度
- y軸 1、0、-1
y=sin(x)+1,y=cos(x)+1のグラフを描く
グラフを2周期分表示する
- 2周期なので計算する範囲が0から720度になる。
- 2周期表示されるようにxじくほうこうの値を調整する。