import java.awt.*;
class Test{
public static void main(String args[]){
/* フレームを作成します。*/
Frame frm = new Frame("18-30");
/* フレームのサイズを変更します。*/
frm.setSize(new Dimension(300,300));
/* フレームに独自のキャンバスを追加します。*/
frm.setrLayout(new GridLayout());
frm.add(new MyCanvas());
/* フレームを見えるようにします。*/
frm.setVisible(true);
}
}
/* 独自のキャンバスクラス */
class MyCanvas extends Canvas{
/* Componentクラスは描画が必要になるとpaintメソッドが自動で呼ばれる。*/
/* この時に渡されるGraphicsオブジェクトを利用することで、描画が可能になる。*/
public void paint(Graphics g){
/* フレームのサイズを取得する */
Dimension d = getSize();
/* 描画色を設定 */
g.setColor(Color.red);
/* 軸を描画する */
g.drawLine(0, d.height / 2, d.width, d.height / 2);
g.drawLine(d.width / 2, 0, d.width / 2, d.height);
/* 描画色を設定 */
g.setColor(Color.blue);
/* グラフの描画 */
int[] xPoints = new int[d.width];
int[] yPoints = new int[d.width];
/* X座標を0から右端まで繰り返す */
for( int i = 0 ; i < d.width ; i++ ){
/* 画面の座標を式のxに変換する */
double x = (Math.PI-(-Math.PI)) / (d.width-0) * (i-d.width/2);
/* f(x)を計算する */
double y = Math.sin(x) + 0.5*Math.cos(2*x) - 0.5*Math.sin(x+0.2);
/* 描画用のx座標を格納する */
xPoints[i] = i;
/* f(x)の値をキャンバスのY座標に変換する */
yPoints[i] = (int)((-y * d.height)/2 + d.height / 2);
}
/* 描画 */
g.drawPolyline(xPoints, yPoints, d.width);
}
}
|