Plan Region Size, Color
Last updated
Last updated
The planning document above shows how to define 2 horizontal regions based on a balanceLine which can be set at width/2 by default.
Example Code
float maxLen, minLen;
color cNeg1, cNeg2, cNegPop1, cNegPop2;
color cPos1, cPos2, cPosPop1, cPosPop2;
void setup(){
size( 1000, 1000);
colorMode(HSB, 360, 100, 100, 100);
background(0);
maxLen = 50;
minLen=1;
cNeg1 = color( 285, 100,100); //purple
cNeg2 = color( 260, 100, 100); //blue
cPos1 = color( 185, 100,100); //aqua
cPos2 = color( 230, 100, 100);//blue
}
void draw(){
if(mousePressed && frameCount %5 == 0){
translate( mouseX, mouseY);
if( mouseX < width/2 ){ //negative region
//determine how color, size change across Negative region
float curLen = map( mouseX, 0, width/2, maxLen, minLen);
float lerpFraction = map( mouseX, 0, width/2, 0.0, 1.0);
color curColor = lerpColor( cNeg1, cNeg2, lerpFraction);
recursivePattern1( curLen, 5, curColor);
}//end negative region
else if( mouseX > width/2 ){ //positive region
//add code here for positive region
} //end if positive region
resetMatrix();
} //end draw
}
void recursivePattern1(float len, float level, color c1){
if( level<1){
return;
}
color shapeColor = color( hue(c1), saturation(c1), brightness(c1)*.8 );
PShape s= createNegShape( len, shapeColor);
shape( s, 0,0);
recursivePattern1( len * .8, level-1, c1);
}
void recursivePattern2(float len, float level, color c1){
if( level<1){
return;
}
color shapeColor = color( hue(c1), saturation(c1), brightness(c1)*.8 );
PShape s= createPosShape( len, shapeColor);
shape( s, 0,0); //render shape
recursivePattern2( len * .8, level-1, c1);
} //end recursivePattern2
//Complex PShapes
PShape createNegShape(float len, color c1){
PShape s = createShape();
s.setFill( c1);
s.beginShape();
stroke( 30,40);
s.vertex(0,0 ); //1
s.vertex(.2*len,.1*len ); //2
s.vertex(.3*len,0 ); //3
s.vertex(.7*len,0 ); //4
s.vertex(.8*len,.1*len); //5
s.vertex(1.0*len,.1*len); //6
s.vertex(1.1*len,.2*len ); //7
s.vertex(1.0*len,.3*len ); //8
s.vertex(1.1*len,.4*len ); //9
s.vertex(1.1*len,.5*len); //10
s.vertex(1.2*len,.6*len); //11
s.vertex(1.2*len,.7*len); //12
s.vertex(1.1*len,.8*len); //13
s.vertex(.9*len,.7*len); //14
s.vertex(1.0*len,.9*len); //15
s.vertex(.9*len,1.0*len); //16
s.vertex(.8*len,.9*len); //17
s.vertex(.4*len,.9*len); //18
s.vertex(.3*len,1.0*len); //19
s.vertex(.1*len,.8*len); //20
s.vertex(.2*len,.7*len); //21
s.vertex(.2*len,.6*len); //22
s.vertex(.1*len,.5*len); //23
s.vertex(.1*len,.4*len); //24
s.vertex(0*len,.3*len); //25
s.vertex(.1*len,.2*len); //26
s.vertex(0*len,0*len); //back to first point
s.beginContour();
s.vertex(.3*len,.3*len ); //1
s.vertex(.3*len,.4*len); //15
s.vertex(.4*len,.5*len); //14
s.vertex(.4*len,.7*len); //13
s.vertex(.5*len,.8*len); //12
s.vertex(.7*len,.8*len); //11
s.vertex(.7*len,.7*len); //10
s.vertex(.8*len,.7*len ); //9
s.vertex(.9*len,.6*len ); //8
s.vertex(.8*len,.5*len ); //7
s.vertex(.9*len,.4*len); //6
s.vertex(.8*len,.3*len); //5
s.vertex(.7*len,.3*len ); //4
s.vertex(.6*len,.2*len ); //3
s.vertex(.4*len,.2*len ); //2
s.vertex(.3*len,.3*len ); //1
s.endContour();
s.endShape(CLOSE);
return s;
}
PShape createPosShape(float len, color c1){
PShape s = createShape();
s.setFill( c1);
s.beginShape();
//s.noStroke();
stroke( 30,20);
s.vertex(0,0 ); //1
s.vertex(.1*len,.1*len ); //2
s.vertex(.3*len,.2*len ); //3
s.vertex(.3*len,.3*len ); //4
s.vertex(.5*len,.4*len); //5
s.vertex(.5*len,.5*len); //6
s.vertex(.7*len,.6*len ); //7
s.vertex(.7*len,.7*len ); //8
s.vertex(.9*len,.8*len ); //9
s.vertex(1.0*len,1.0*len); //10
s.vertex(.8*len,.9*len); //11
s.vertex(.7*len,.8*len); //12
s.vertex(.6*len,.9*len); //13
s.vertex(.6*len,.7*len); //14
s.vertex(.5*len,.6*len); //15
s.vertex(.4*len,.6*len ); //16
s.vertex(.4*len,.7*len ); //17
s.vertex(.5*len,.8*len ); //18
s.vertex(.5*len,1.0*len ); //19
s.vertex(.4*len,.8*len); //20
s.vertex(.3*len,.7*len); //21
s.vertex(.3*len,.6*len ); //22
s.vertex(.4*len,.5*len ); //23
s.vertex(.3*len,.4*len ); //24
s.vertex(.2*len,.4*len); //25
s.vertex(.3*len,.5*len); //26
s.vertex(.2*len,.5*len); //27
s.vertex(.2*len,.7*len); //28
s.vertex(.1*len,.5*len); //29
s.vertex(.1*len,.4*len); //30
s.vertex(.2*len,.3*len); //31
s.vertex(.1*len,.4*len); //32
s.vertex(0,0 ); //1 //back to first point
s.endShape(CLOSE);
return s;
}