
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;
}
}
}
No.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
で変換した値が使われています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するQ&A
関連するカテゴリからQ&Aを探す
おすすめ情報
人気Q&Aランキング
-
4
AutoCADへのエクセル座標の読込
-
5
線の画像を座標数値化するソフ...
-
6
Matlab 2行の行列をプロットし...
-
7
地図で顧客管理
-
8
白地図の色分け
-
9
地図上に入力した緯度、経度の...
-
10
O(オー)と0(ゼロ)の表記
-
11
windows10で無料のワードやエク...
-
12
googleマップを半径表示させる...
-
13
Enterキーでマクロを起動...
-
14
macの「GarageBand」という音楽...
-
15
近似曲線の設定方法
-
16
AutoCADでSFCを読み込みたい...
-
17
マクロを実行するとパス名が無...
-
18
Access2010マクロ メッセージ...
-
19
Illustratorの画面上で2点間の...
-
20
添付ファイルのみを自動印刷し...
おすすめ情報