プロが教えるわが家の防犯対策術!

javaアプレットでy=x^2のグラフを描写したいのですが、現在の状態ではグラフの右側しか画面に現れません。軸の移動をすればよいと思うのですが、どのように修正すればよいのでしょうか?

import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Color;

public class test1 extends Applet{

public void paint(Graphics g){
g.setColor(Color.red);
int x,yp=100,xp=0;
for(x=0;x<200;x++){

int y=(int)(x*x)*(-1)+100;

g.drawLine(xp,yp,x,y);
xp = x;
yp = y;
}
}
}

A 回答 (1件)

for(x=0;x<200;x++) で、0≦x<200の範囲でxが変化して、 y=-x^2+100の計算をしているのですから、その範囲しか表示されない(=放物線の半分しか表示されない)のは当り前です。



数学のグラフを書くときは、
1) 数学での座標(x,y)で計算する
2) 1)で求めた座標(x,y)を画面上の座標(x',y')に変換する
という手順を踏むのがよいでしょう。

x' = x方向の縮小拡大率 * x + 数学での(0,0)に対応する画面上の座標でのx'の値
y' = -1 * y方向の縮小拡大率 * y + 数学での(0,0)に対応する画面上の座標でのy'の値
※ 数学のyと画面のy'は大小と上下の関係が逆になっているので、-1倍します

このプログラムでも、実際に変数yには x^2ではなく、
int y=(int)(x*x)*(-1)+100

・y方向の縮小拡大率 = 1
・数学での(0,0)に対応する画面上の座標でのy'の値 = +100
で変換した値が使われています。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!