Genuary 5

Write “Genuary”. Avoid using a font.

I made these letters using the loop drawing algorithm I created for my Loop Line Logics series of plots. The Processing function code is below.

void hhAdjustaLoop(float x, float y, float loopWidth, float loopHeight, float loopLean, float loopEnd) {
  /* draws adjustable loops
   * extra curves added to start and end points to smooth out transitions
   */

  float loopCenter = 0.5 * loopEnd; //calculate center position for the loop proportional to the end point

  //derive anchor and control points - this keeps c1c2 and c3c1 always in the middle
  //in order keep straight lines between control points and prevent kinks
  //curve1
  PVector c1a1 = new PVector(0, 0);
  PVector c1c1 = new PVector(0, 0);
  PVector c1c2 = new PVector(loopCenter, 0);
  //the next PVectors are all assigned dynamically based on loopHeight value
  PVector c1a2 = new PVector(0, 0); //declare a new PVector

  //curve2
  PVector c2c1 = new PVector(0, 0); //declare a new PVector
  PVector c2c2 = new PVector(0, 0); //declare a new PVector
  PVector c2a2 = new PVector(0, 0); //declare a new PVector
  if (loopHeight > 0) {
    c1a2.set(loopCenter+loopWidth+(loopLean*1.0), loopHeight*0.5-(loopLean*0.5));
    c2c1.set(loopCenter+(loopWidth*2.0)+(loopLean*2.0), loopHeight-(loopLean*1.0));
    c2c2.set(loopCenter-(loopWidth*2.0)+(loopLean*2.0), loopHeight+(loopLean*1.0));
    c2a2.set(loopCenter-loopWidth+(loopLean*1.0), loopHeight*0.5+(loopLean*0.5));
  } else {
    c1a2.set(loopCenter+loopWidth+(loopLean*1.0), loopHeight*0.5+(loopLean*0.5));
    c2c1.set(loopCenter+(loopWidth*2.0)+(loopLean*2.0), loopHeight+(loopLean*1.0));
    c2c2.set(loopCenter-(loopWidth*2.0)+(loopLean*2.0), loopHeight-(loopLean*1.0));
    c2a2.set(loopCenter-loopWidth+(loopLean*1.0), loopHeight*0.5-(loopLean*0.5));
  }

  //curve3
  //PVector c3c1 = new PVector(loopCenter-loopWidth+(loopLean*1.0), (loopHeight*0.5)+(loopLean*0.5));
  PVector c3c1 = new PVector(loopCenter, 0);
  PVector c3c2 = new PVector(loopEnd, 0);
  PVector c3a2 = new PVector(loopEnd, 0);

  pushMatrix();
  translate(x, y); //move to starting point
  beginShape();
  vertex(c1a1.x, c1a1.y); //first point
  bezierVertex(c1c1.x, c1c1.y, c1c2.x, c1c2.y, c1a2.x, c1a2.y); //transition from start to center curve
  bezierVertex(c2c1.x, c2c1.y, c2c2.x, c2c2.y, c2a2.x, c2a2.y); //center curve
  bezierVertex(c3c1.x, c3c1.y, c3c2.x, c3c2.y, c3a2.x, c3a2.y); //transition from center curve to end
  endShape();
  popMatrix();
} //end hhAdjustaLoop()

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.