Vera Molnár, née Gács (5 January 1924 – 7 December 2023), was a Hungarian media artist who lived and worked in France. Molnár is widely considered to have been a pioneer of computer art and generative art, and was also one of the first women to use computers in her art practice.
en.wikipedia.org/wiki/vera_moln%c3%a1r
google.com/search?q=vera+moln%c3%a1r&tbm=isch
This generates variations to "Parcours à l’angle droit" (1997)
Log in to post a comment.
const size = 5; //min=1 max=25 step=2 const margin = 5; //min=0 max=30 step=1 const padding = .15; //min=0 max=.8 step=.01 const maxZigZags = 5; //min=1 max=10 step=1 const HORIZONTAL = 0; const VERTICAL = 1; const TOP_BOTTOM = 0; const BOTTOM_TOP = 1; const LEFT_RIGHT = 2; const RIGHT_LEFT = 3; const tileSize = (200 - margin - margin) / size; const topLeft = [margin - 100, margin - 100]; const padd = tileSize * padding; const drawSize = tileSize - padd; // You can find the Turtle API reference here: https://turtletoy.net/syntax Canvas.setpenopacity(1); // Global code will be evaluated once. const turtle = new Turtle(add2(topLeft, [padd / 2, padd / 2])); // The walk function will be called until it returns false. function walk(i) { let column = i % size; let row = (i / size) | 0; const directionVertical = (column + row) % 2 == 0? TOP_BOTTOM: BOTTOM_TOP; const directionHorizontal = row % 2 == 0? LEFT_RIGHT: RIGHT_LEFT; let pts = [(tileSize - padd) * -.5].map(v => [[1, 1], [1, -1]].map(vv => vv.map(vv => v * vv))).pop(); const zigzags = 1 + (Math.random() * (maxZigZags - 1)) | 0; const bridgeLength = drawSize / (zigzags * 2); for(let i = 0; i < zigzags; i++) { [[1, 0, 1], [1, 0, -1], [-1, 1, 1], [-1, 1, -1]].forEach(params => pts.push([ (tileSize - padd) * -.5 + bridgeLength + (i * 2 + params[1]) * bridgeLength, (tileSize - padd) * .5 * params[2] * params[0] ]) ) } const orientation = Math.random() < .5? HORIZONTAL: VERTICAL; const myCenter = add2( add2(topLeft, [tileSize/2, tileSize/2]), mul2([tileSize, tileSize], [directionHorizontal == RIGHT_LEFT? size - column - 1: column, row]) ); pts .map(pt => trans2(orientation == HORIZONTAL? [0, 1, 1, 0]: [1, 0, 0, 1], pt)) .map(pt => trans2(directionHorizontal == LEFT_RIGHT? [1, 0, 0, 1]: [0, -1, -1, 0], pt)) .map(pt => trans2(directionVertical == TOP_BOTTOM? [1, 0, 0, 1]: [1, 0, 0, -1], pt)) .map(pt => add2(myCenter, pt)) .forEach(pt => turtle.goto(pt)); return i < size**2 - 1; } function add2(a, b) { return [a[0]+b[0], a[1]+b[1]]; } function sub2(a, b) { return [a[0]-b[0], a[1]-b[1]]; } function mul2(a, b) { return [a[0]*b[0], a[1]*b[1]]; } function scale2(a, s) { return [a[0]*s,a[1]*s]; } function rot2(a) { return [Math.cos(a), -Math.sin(a), Math.sin(a), Math.cos(a)]; } function trans2(m, a) { return [m[0]*a[0]+m[2]*a[1], m[1]*a[0]+m[3]*a[1]]; }