有一根主刺的是什么鱼:如何在java中画出一个sinx图像?

来源:百度文库 编辑:高校问答 时间:2024/05/01 10:49:37
我自己编写了一个程序。但是输出的图像却是错误的。大家帮忙看看。
//A program to draw a graph of "y=sin(x)".
//Written by jameyli,nov 2005.
//Revsion History:none.
import java.awt.*;
import java.awt.geom.*;
public class Sinx1 extends DrawPanel{
public static void main(final String[] args){
DrawFrame frame=new DrawFrame("Drawing of a graph.");
Sinx1 drawing=new Sinx1(600,200);
frame.add(drawing);
frame.pack();
frame.centreOnScreen();
frame.setVisible(true);
}
public Sinx1(){}
public Sinx1(final int w,final int h){
super(w,h);
}
void DrawXaxis(final Graphics2D g2d){
Line2D line=new Line2D.Double(50,100,500,100);
g2d.draw(line);
for(int i=1;i<8;++i){
if (i!=0){
line.setLine((i*50)+50,100,(i*50)+50,105);
g2d.draw(line);
}
g2d.drawString(new Integer(i).toString(),(i*50)+42,120);
}
}
void DrawYaxis(final Graphics2D g2d){
Line2D line=new Line2D.Double(50,180,50,20);
g2d.draw(line);
for(int i=1;i<4;++i){
line.setLine(50,i*50,45,i*50);
g2d.draw(line);
g2d.drawString(new Integer(2-i).toString(),35,i*50);
}
}
void points(final Graphics2D g2d){
double xoffset=50;
double yoffset=100;
Rectangle2D rectangle=new Rectangle2D.Double(0,0,0,0);
double increment = 2*3.14/300;
double x=0.0;
while(x<=2*Math.PI){
int i=200;
x+=increment;
rectangle.setRect(x*50+xoffset,50*Math.sin(x)+yoffset,1,1);
g2d.draw(rectangle);
}
}
public void paint(final Graphics g){
Graphics2D g2d=(Graphics2D)g;
DrawXaxis(g2d);
DrawYaxis(g2d);
points(g2d);
}
}
我自己把x和sinx都放大了50倍。而且零点坐标偏移到了(50,100)。大家可以现在编译并执行一下就会明白了。