第一组公式
public void drawDream1(double a,double b,double c,double d){
//函数传入四个常量
double x=0f;
double y=0f;
for(int i=0;i<25500;i++){
//公式
double temx=Math.sin(a*y)+c*Math.cos(a*x);
double temy=Math.sin(b*x)+d*Math.cos(b*y);
//对x1,y1转型,放大,移动到屏幕坐标系
int x1=(int)(temx*130+400);//130是放大多少倍,400是起始坐标
int y1=(int)(temy*130+400);
System.out.println("x1: "+x1+" y1: "+y1);
//颜色根据迭代次数加深
g.setColor(new Color(0,0,i/100));
g.drawLine(x1, y1, x1, y1);
x=temx;//下一次迭代
y=temy;
}
}
调用
drawDream1(-1.8,-2.0,-0.5,-0.9);
换组参数调用
drawDream1(-1.7,1.8,-1.9,-0.4);
长这样↓
反正都好丑
第二组公式
公式丢了找不到,反正画出来一棵树,参数一堆
//这是参数,七组,每次迭代随机取一组代入
double[][] cs={{0.0500,0.0000,0.0000,0.4000,-0.0600,-0.4700},
{-0.0500,0.0000,0.0000,-0.4000,-0.0600,-0.4700},
{0.0300,-0.1400,0.0000,0.2600,-0.1600,-0.0100},
{-0.0300,0.1400,0.0000,-0.2600,-0.1600,-0.0100},
{0.5600,0.4400,-0.3700,0.5100,0.3000,0.1500},
{0.1900,0.0700,-0.1000,0.1500,-0.2000,0.2800},
{-0.3300,-0.3400,-0.3300,0.3400,-0.5400,0.3900}};
public void drawTree(int rx,int ry){
double x=0f;
double y=0f;
Random rand = new Random();
for(int i=0;i<25500;i++){
int k=rand.nextInt(7);
System.out.println(k);
//公式
double temx=cs[k][0]*x+cs[k][1]*y+cs[k][4];
double temy=cs[k][2]*x+cs[k][3]*y+cs[k][5];
//对x1,y1转型,放大,移动到屏幕坐标系
int x1=(int)(temx*130+rx);
int y1=(int)(-temy*130+ry);//把图上下颠倒,树反了233
System.out.println("x1: "+x1+" y1: "+y1);
//颜色根据迭代次数加深
g.setColor(new Color(0,0,i/100));
g.drawLine(x1, y1, x1, y1);
x=temx;
y=temy;
}
}
画出来长这个亚子↓
好看所以画了一片森林