A complement on procedural art. I saw a Processing sketch1 which exhibits some of the properties of the image you presented:
Surely it is possible to express this differenlty or draw inspiration from the technique. The sketch draws 2 sets of upward and downward triangles using an offset and varying alpha and this is repeated. One parameter of the color is altered dynamically. An array of "speeds" is matched to that color parameter. So colors are constrained to some variations within a range and the drawing loops. I find it's really clever.
If you isolate the triangles from the color and gradients, it's also possible to use this as a tool to generate static but interesting triangle patterns similar to the mosaic and gradient tools found software(left out some elements to showcase "layers"):
This uses the same 4 triangles with one color and 4 opacity levels and a gradient similar to this setup. Here is the simple program I used:
void setup(){
size(500,500);
smooth();
}
void draw(){
background(0);
drawGrad();
drawTria();
}
void drawTria(){
noStroke();
colorMode(RGB);
for(int x = 0;x < 6; x++){
for(int y = 0;y < 3; y++){
fill(0, 63, 255, 150);
triangle(0+100*x, 84+168*y, 50+100*x, 0+168*y, -50+100*x, 0+168*y);
fill(0, 63, 255, 50);
triangle(0+100*x, 84+168*y, 50+100*x, 168+168*y, -50+100*x, 168+168*y);
fill(0, 63, 255, 100);
triangle(50+100*x, 0+168*y, 100+100*x, 84+168*y, 0+100*x, 84+168*y);
fill(0, 63, 255, 200);
triangle(50+100*x, 168+168*y, 100+100*x, 84+168*y, 0+100*x, 84+168*y);
}
}
}
void drawGrad(){
colorMode(RGB, width);
for (int i = 0; i < width; i++) {
for (int j = 0; j < height; j++) {
stroke(i, j, 200);
point(i, j);
}
}
}
void keyPressed(){
if (key == 's') { save("this_pattern" + random(3)); }
}
These building blocks are quite accessible as I am no developer. One can explore and tailor patterns at will!
Attribution: "yabe1324065" by Tetsuro Yabe, licensed under Creative Commons Attribution-Share Alike 3.0 and GNU GPL license.
Work: link
License: 1, 2