ソースコードは参照サイト様のもので、
私が理解用にコメントを加えています。
クリックで再描画、
スペースで保存します。
保存形式はtifからjpgに私が変更しました。
そのまま動くソースコード。
/** Clifford A. Pickover's attractor Made with Processing 118 */ float a,b,c,d;// int numOfDots = 5000;// int interval = 0; float keyColor;// float factor = 300;//size MyDot[] myDots = new MyDot[numOfDots];// PGraphics imgBuffer;//3d buffer? void setup(){ size(960,540);// factor = height*0.3; //size colorMode(HSB);// background(0);// keyColor = random(255);// a = random(-3.0,3.0);// b = random(-3.0,3.0);// c = random(-3.0,3.0);// d = random(-3.0,3.0);// for(int i=0;i<numOfDots;i++){// myDots[i] = new MyDot();// } imgBuffer = createGraphics(width,height,P3D);// imgBuffer.beginDraw();// imgBuffer.background(0);// imgBuffer.endDraw();// } void draw(){ imgBuffer.beginDraw();// imgBuffer.translate(width/2,height/2);// for(int i=0;i<numOfDots;i++){// myDots[i].update();// } imgBuffer.endDraw();// //write per 10 times if(interval > 10){ interval = 0; //image(imgBuffer, 0, 0); blend(imgBuffer, 0, 0, width, height, 0, 0, width, height, ADD);//imgBufferの画像を、画面に反映 imgBuffer.beginDraw(); imgBuffer.background(0);//これを消すとすぐ明るくなる。。。//なるほど、ImgBufferはリセットするのか imgBuffer.endDraw(); } interval++; //println(interval); } //ok void mouseReleased(){ reset(); } //ok //save image void keyPressed(){ if(!online){ if(key == ' '){ String outTifName ="attractor"+"_"+nf(year(),4)+nf(month(),2)+nf(day(),2)+"_"+nf(hour(),2)+nf(minute(),2)+nf(second(),2)+".jpg";//拡張子をtifからjpgに変更しました save(outTifName); } } } //ok void reset(){ a = random(-3.0,3.0); b = random(-3.0,3.0); c = random(-3.0,3.0); d = random(-3.0,3.0); keyColor = random(0,255); for(int i=0;i<numOfDots;i++){ myDots[i].init(); } background(0); imgBuffer.beginDraw(); imgBuffer.background(0); imgBuffer.endDraw(); } class MyDot{ float x,y,z; float xn,yn,zn; int age = 0; //? MyDot(){ x = random(-1.0,1.0); y = random(-1.0,1.0); z = random(-1.0,1.0); } void update(){ xn = sin(a*y) - cos(b*x); //yn = z*sin(c*x) - cos(d*y); yn = sin(c*x) - cos(d*y); zn = sin(x); x = xn; y = yn; z = zn; imgBuffer.stroke(keyColor,((-1*zn*128)+128),75,10); imgBuffer.point(x*factor,y*factor,z*factor); if(age > 100){ init(); } age++; } void init(){ age = 0; x = random(-1.0,1.0); y = random(-1.0,1.0); z = random(-1.0,1.0); } }