
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()
