换笔5叶曲线
hb5yqx.java
// 换笔5叶曲线 hb5yqx.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 hb5yqx extends Applet{
//换笔5叶曲线hb5yqx类继承Java小程序Applet类
int i=5;
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){
//换画笔绘制5叶曲线
//用k循环递增改变画笔,不增加花叶数,不控制画第几叶
for(int k=0;k<=2;k++){
//设置两次背景色(蓝色底,绿色底),背景不断刷新,
//不断绘制花叶,产生动态效果
setBackground(Color.blue);
setBackground(Color.green);
switch(k){
case 0:
g.setColor(new Color(255,0,0)); //设置画笔为红色
break;
case 1:
g.setColor(new Color(0,0,255)); //设置画笔为蓝色
break;
case 2:
g.setColor(new Color(255,200,0)); //设置画笔为黄色
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);
}
}
}
}