动态三色三叶曲线
dt3s3yqx.java
// 动态三色三叶曲线 dt3s3yqx.java 程序设计: 谢 春 2002.3.25.
// 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 dt3s3yqx extends Applet{
//动态三色三叶曲线
dt3s3yqx类继承Java小程序Applet类
int i=3;
double PI=3.141596,j,j1=PI/5555,j2=PI/6;
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){
// k循环不控制花叶数i,控制画笔颜色和画第几叶
for(int k=1;k<=5;k+=2){
//设置两次背景色(蓝色,绿色),背景不断刷新,不断绘制花叶,产生动态效果
setBackground(Color.blue);
setBackground(Color.green);
switch(k){
case 1:
g.setColor(new Color(0,0,255)); //设置画笔为蓝色
break;
case 3:
g.setColor(new Color(255,255,0)); //设置画笔为黄色
break;
case 5:
g.setColor(new Color(255,0,0)); //设置画笔为红色
break;
}
for (j=k*j2;j<=(k+2)*j2;j+=j1){ //轮流绘制3个花叶
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);
}
}
}
}