Artifacts To Date:
I worked this week to rebuild my Scratch prototypes with the Processing language, which is best for creating graphics that can be translated into textiles on a jacquard loom. WOVNS requires all colors to be expressed with specific hexadecimal values in any selected palette. Coding with that kind of color specificity is not possible with Scratch.
The first rebuild used a different algorithm to achieve the desired generative design. Here is an example generative design:
Here is the code:
// "Two Agents Crossing" Dylan Ryder, November 2017
// Designed in Processing
// Talma Quality, Pastel 2 Palette
size(3984, 3000); // 46-48" x 36", 84 DPI
background(#F9FAF9); // Blizzard
noSmooth();
noStroke();
int side = 100;
int x1 = 2000;
int x2 = 0;
int y1 = -100;
int y2 = height / 2;
// Vertical Agent
fill(#877193); // Beta
while (y1 < height) {
// Y axis traveling
int r = int(random(7));
for (int i = 0; i <= r; i++) {
y1 += side;
rect(x1, y1, side, side);
}
// X axis traveling
r = int(random(3));
int shift = int(random(2));
for (int i = 0; i < r; i++) {
if (shift == 0) {
x1 -= side;
rect(x1, y1, side, side);
} else {
x1 += side;
rect(x1, y1, side, side);
}
}
}
// Horizontal Agent
for (int x = 0; x < width; x += side) {
pushMatrix();
translate(x * int(random(2)), 0);
fill(#BFCDE5); // Moon
//fill(#74AED7); // Ciel
rect(x2, y2, side, side);
popMatrix();
}
// generate a unique filename for each generation based on datestamp
save("Form "+nf(month(), 2)+"-"+nf(day(), 2)+"-"+year()+" at "+nf(hour(), 2)+"."+nf(minute(), 2)+"."+nf(second(), 2)+"s"+".png");
The next rebuild also used a slightly different algorithm to achieve my desired generative design. Here is an example of that generative design:
Here is the code:
// "Squares in an Imperfect Grid with 8-bit Fill Variability"
// Dylan Ryder, November 2017
// Designed in Processing
// Talma Quality, Pastel 2 Palette
size(3984, 3000); // 46-48" x 36", 84 DPI
background(#BFCDE5); // Moon
noSmooth();
noStroke();
color c = #F9FAF9; // Blizzard
fill(c);
int w = width / 30;
int h = height / 25;
int r; // horizontal random gap between squares
int vRand; // vertical random gap between rows
int stroke;
for (int row = 0; row < 18; row++) {
vRand = int(random(30));
for (int col = 0; col < 18; col++) {
// decide if the shape is filled or not
if (int(random(256)) == 255) {
noFill();
stroke(c); // Color
stroke = 5;
strokeWeight(stroke);
} else {
noStroke();
fill(c); // Color
stroke = 0;
}
r = int(random(-20, 20));
// draw the square
rect(w * col * 2 + w / 2 + r, h * row * 1.35 + h / 2 + vRand,
(w * 3 / 4)-stroke, (h * 3 / 4)-stroke );
}
}
// generate a unique filename for each generation based on datestamp
save("Grid "+nf(month(), 2)+"-"+nf(day(), 2)+"-"+year()+" at "+nf(hour(), 2)+"."+nf(minute(), 2)+"."+nf(second(), 2)+"s"+".png");
Adjustments to Timeline:
I am feeling motivated to make this work a triad and plan to design one more algorithm for a third piece. I plan to get that done this weekend and if I am satisfied with it, I will have all three works fabricated.