int iterations=0;
int depth;
color WalkerColor;
RandomWalker2d[] myWalkers= new RandomWalker2d[iterations];
//RandomWalker3d[] myWalkers= new RandomWalker3d[iterations];
void setup(){
colorMode(RGB, 255,255,255,1024);
size(720,486,P3D);
//smooth();
background(0);
depth=(int)sqrt(width*height);
for(int i=0;i<iterations;i++){
WalkerColor=color(100,100+random(155),100+random(155),200);
myWalkers[i]=new RandomWalker2d(width/2,height/2,(int)random(5)+1,WalkerColor);
// myWalkers[i]=new RandomWalker3d(width/2 ,height/2 ,depth/2 ,(int)random(2)+1, WalkerColor);
}
}
void draw(){
//background(0);
//float theta=mouseX*TWO_PI/width;
//float phi=mouseY*TWO_PI/height;
//camera(sin(theta)*width+150, sin(phi)*width+150, cos(theta)*width+150,
//150.0, 150.0, 150.0,
//0.0, 1.0, 0.0);
for(int i=0;i<myWalkers.length;i++){
myWalkers[i].walk();
}
noStroke();
fill(0,20);
rect(0,0,width,height);
}
void mouseDragged(){
WalkerColor=color(100,100+random(155),100+random(155),200);
float distance=sqrt(sq(mouseX-pmouseX)+sq(mouseY-pmouseY));
RandomWalker2d myWalker= new RandomWalker2d(mouseX,mouseY,(int)random(distance)+1,WalkerColor);
//RandomWalker3d myWalker= new RandomWalker3d(mouseX,mouseY,10,(int)random(distance)+1,WalkerColor);
myWalkers=(RandomWalker2d[])append(myWalkers,myWalker );
// myWalkers=(RandomWalker3d[])append(myWalkers,myWalker );
}
//randomWalker2d v0.1
class RandomWalker2d {
float posX;
float posY;
float prevPosX;
float prevPosY;
float stepSize;
color walkerColor;
RandomWalker2d(float initPosX,float initPosY, float initStep, color initColor){
prevPosX=posX=initPosX;
prevPosY=posY=initPosY;
stepSize=initStep;
walkerColor=initColor;
}
void walk(){
// strokeWeight(0.5);
posX=(posX+random(-stepSize,stepSize));
posY=(posY+random(-stepSize,stepSize));
//posY+=constrain(abs((prevPosY-posY))*2,0,4);
//posY+=9.8;
if(posX<0||posX>width||posY<0||posY>height){
posX=random(width);
posY=random(height);
prevPosX=posX;
prevPosY=posY;
}
else{
stroke(walkerColor);
fill(walkerColor);
line(prevPosX,prevPosY,posX,posY);
//ellipse(posX,posY,3,3);
prevPosX=posX;
prevPosY=posY;
}
}
}
//randomWalker3d v0.1
class RandomWalker3d {
float posX;
float posY;
float posZ;
float prevPosX;
float prevPosY;
float prevPosZ;
float stepSize;
float depth;
color walkerColor;
RandomWalker3d(float initPosX, float initPosY, float initPosZ, float initStep, color initColor){
prevPosX=posX=initPosX;
prevPosY=posY=initPosY;
prevPosZ=posZ=initPosZ;
stepSize=initStep;
walkerColor=initColor;
depth=sqrt(height*width);
}
void walk(){
// strokeWeight(0.5);
posX=(posX+random(-stepSize,stepSize));
posY=(posY+random(-stepSize,stepSize));
posZ=(posZ+random(-stepSize,stepSize));
//posY+=constrain(abs((prevPosY-posY))*2,0,4);
//posY+=9.8;
if(posX<0||posX>width||posY<0||posY>height||posZ<-depth||posZ>depth){
posX=random(width);
posY=random(height);
posZ=random(depth);
prevPosX=posX;
prevPosY=posY;
}
else{
strokeWeight(2);
stroke(walkerColor);
fill(walkerColor);
line(prevPosX,prevPosY,prevPosZ,posX,posY,posZ);
//ellipse(posX,posY,3,3);
prevPosX=posX;
prevPosY=posY;
prevPosZ=posZ;
}
}
}