函数曲线 hsqx.java

程序设计: 谢山水 2002.2.22.

// 函数曲线 hsqx.java 程序设计: 谢山水 2002.2.22.

// 多叶曲线:线宽、花叶颜色、各叶片色、背景色、叶数、位置、显示速度
// a, b : 背景颜色a 画笔颜色 b
// x, y : 水平移动图形 x=0--639 垂直移动图形 y=0--479
// r1,r2: 水平方向半径 r1=0--320 垂直方向半径 r2=0--240
// i, j : 心形曲线叶片 i=1--24 心形曲线弧度 j=0--2*PI

import java.applet.*; //导入java语言小程序applet包的所有类
import java.awt.Color; //导入java语言awt抽象窗口工具包的Color类
import java.awt.Graphics; //导入java语言awt抽象窗口工具包的Graphics类

public class hsqx extends Applet{ 
//函数曲线hsqx类继承Java小程序Applet类
int i=2;
double PI=3.141596,j,j1=PI/5555;
double fx(double j){ //定义求x轴投影和x轴坐标的方法
return (Math.cos(i*j)*Math.cos(j)+1.1)*size().width*0.45;
}
double fy(double j){ //定义求y轴投影和y轴坐标的方法
return (Math.cos(i*j)*Math.sin(j)+1.06)*size().height*0.45;
}
public void paint(Graphics g){
// k循环不控制花叶数i,控制颜色
for(i=0;i<=3;i++){ 
//设置两次背景色(蓝色,绿色),背景不断刷新,
//不断绘制花叶,产生动态效果
setBackground(Color.blue);
setBackground(Color.green);

switch(i){
case 0:
g.setColor(new Color(255,0,0));    //设置画笔为红色
break;
case 1:
g.setColor(new Color(255,180,0));  //设置画笔为黄色
break;
case 2:
g.setColor(new Color(0,180,255));  //设置画笔为青色
break;
case 3:
g.setColor(new Color(0,0,255));    //设置画笔为蓝色
break;
}
for (j=0;j<=2*PI;j+=j1){ //绘制函数曲线图形
g.drawLine((int)fx(j),(int)fy(j),(int)fx(j+j1),(int)fy(j+j1));
g.drawLine((int)fx(j),(int)fy(j)+1,(int)fx(j+j1),(int)fy(j+j1)+1);
g.drawLine((int)fx(j),(int)fy(j)+2,(int)fx(j+j1),(int)fy(j+j1)+2);
g.drawLine((int)fx(j),(int)fy(j)+3,(int)fx(j+j1),(int)fy(j+j1)+3);
g.drawLine((int)fx(j),(int)fy(j)+4,(int)fx(j+j1),(int)fy(j+j1)+4);
g.drawLine((int)fx(j),(int)fy(j)+5,(int)fx(j+j1),(int)fy(j+j1)+5);
g.drawLine((int)fx(j),(int)fy(j)+6,(int)fx(j+j1),(int)fy(j+j1)+6);
g.drawLine((int)fx(j),(int)fy(j)+7,(int)fx(j+j1),(int)fy(j+j1)+7);
g.drawLine((int)fx(j),(int)fy(j)+8,(int)fx(j+j1),(int)fy(j+j1)+8);
}
}
}
}