换笔减叶73
hbjy73.java
// 换笔减叶73 hbjy73.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 hbjy73 extends Applet{
//换笔增叶hbjy类继承Java小程序Applet类
int i;
double PI=3.141596,j,j1=PI/5555;
double fx(double j){ //定义求x轴投影和x轴坐标的方法
return (Math.cos(i*j)*Math.cos(j)+1.5)*size().width*0.3;
}
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){
//换笔画笔减叶绘制73花叶
//用i循环递增增加花叶数和改变画笔,不控制画第几叶
for(i=7;i>=3;i-=4){
//设置两次背景色(蓝色底,绿色底),背景不断刷新,
//不断绘制花叶,产生动态效果
setBackground(Color.blue);
setBackground(Color.green);
switch(i){
case 7:
g.setColor(new Color(0,150,255)); //设置画笔为蓝色
break;
case 3:
g.setColor(new Color(255,0,150)); //设置画笔为红色
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);
}
}
}
}