Plan Region Size, Color

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;
}

Last updated