import java.applet.*;
import java.awt.*;public class DrawFigures extends Applet {

int w,h,EX,EY;

public void init() {
w = Integer.parseInt(getParameter("width"));
h = Integer.parseInt(getParameter("height"));
EY = (int)((h-30)/2);
EX = (int)((w-30)/4/Math.PI);
}

final static int n = 1000;

public void paint (Graphics g) {
g.setColor(Color.green);
g.drawLine(0, h/2, w, h/2);
g.drawLine(w/2,0,w/2,h);
g.drawLine(w-10, h/2-10, w, h/2);
g.drawLine(w-10, h/2+10, w, h/2);//画X轴的箭头 
g.drawLine(w/2, 0, w/2-10, 10);
g.drawLine(w/2, 0, w/2+10, 10);//画Y轴的箭头
int x,y,m,lenx,leny,d;
m = 8; lenx = (w-30)/8;
d = 8; leny = (h-30)/8;
x = w/2;
y = h/2;
double db = 0.5;
int Int = 1;
for(int i=0; i<5; i++) {
g.drawLine(x+i*lenx,h/2,x+i*lenx,h/2-10);
g.drawLine(x-i*lenx,h/2,x-i*lenx,h/2-10);

}
for(int i=1; i<5; i++) {
String s2 = String.valueOf(db);
g.drawString(s2+"π",x+i*lenx-10,h/2+20);
g.drawString(s2+"π",x-i*lenx-10,h/2+20);
db = db+0.5;
for(int q=1; q<5; q++){
g.drawString("-",x-q*lenx-12,h/2+20);
}
}
for(int i=0; i<5; i++) {
g.drawLine(w/2,y+i*leny,w/2+10,y+leny*i);
g.drawLine(w/2,y-i*leny,w/2+10,y-leny*i);
}
for(int i=1; i<5; i++) {
String s = Integer.toString(Int);//int类型转换为String类型
g.drawString(s,w/2+15,y-leny*i+2);
g.drawString(s,w/2+15,y+leny*i+2);
Int= Int + 1;
for(int q=1; q<5; q++) {
g.drawString("-",w/2+12, y+q*leny+2);
}
}
g.drawString("0",w/2+10,h/2+20);
g.drawString("X",w-10,h/2-20);
g.drawString("y",w/2+10,10);

double h1 = 4.0*Math.PI/n;
double x1=-2*Math.PI,y1=Math.sin(x1),x2,y2;
g.setColor(Color.red);
for(int i=0; i<n; i++) {
x2 = x1+h1;
y2 = Math.sin(x2);
g.drawLine((int)(x1*EX)+w/2,(int)(h/2)-(int)(EY*y1),(int)(x2*EX)+w/2,(int)(h/2)-(int)(y2*EY));

x1 = x2;
y1 = y2;
}
}

public static void main(String args[]) {
new DrawFigures();
}
}程序69行(g.drawLine((int)(x1*EX)+w/2,(int)(h/2)-(int)(EY*y1),(int)(x2*EX)+w/2,(int)(h/2)-(int)(y2*EY));)读不懂,谁能帮我理解一下啊?都表示那些点啊,是从(-2PI,0)点开始画么?
还有EY = (int)((h-30)/2);EX = (int)((w-30)/4/Math.PI);干嘛要-30啊?

解决方案 »

  1.   

    我只知道那是两个点的坐标之间划一根线,其他的也没看明白,有drawline 方法代码吗
      

  2.   

    drawLine(int x1,int y1,int x2,int y2)
    四个数值,前两者代表起始位置的坐标,后两个代表结束位置的坐标。-30,确定开始的位置。
    比如实现一个红色小球从界面落下来,你需要减去30(球的直径),让你能够看到他从无到有的过程。
    这里不清楚,乱。
      

  3.   

    现在看到swing就表示没什么兴趣