{"id":549,"date":"2021-09-08T14:18:16","date_gmt":"2021-09-08T18:18:16","guid":{"rendered":"https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/?p=549"},"modified":"2021-09-08T14:21:33","modified_gmt":"2021-09-08T18:21:33","slug":"dinkolas-molnarrecode","status":"publish","type":"post","link":"https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/dinkolas\/09\/08\/dinkolas-molnarrecode\/","title":{"rendered":"dinkolas &#8211; MolnarRecode"},"content":{"rendered":"<p><a href=\"https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/09\/vera4.svg\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-medium wp-image-550\" src=\"https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/09\/vera4.svg\" alt=\"\" width=\"640\" height=\"480\" \/><\/a><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-medium wp-image-552\" src=\"https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/09\/vera-dinkolas-481x480.png\" alt=\"\" width=\"481\" height=\"480\" srcset=\"https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/09\/vera-dinkolas-481x480.png 481w, https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/09\/vera-dinkolas-150x150.png 150w, https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/09\/vera-dinkolas.png 702w\" sizes=\"(max-width: 481px) 85vw, 481px\" \/><\/p>\n<p>I dunno if I&#8217;m crazy, but I think the p5 svg thing breaks the pop() function, so I learned how to invert my goddang transformations.<\/p>\n<pre>let dosvg = true;\r\nconst edgeRoom = 30;\r\nconst Wm = 12;\r\nconst Hm = 12;\r\nconst Lm = 40;\r\nconst Sw = dosvg ? 0.8 : 0.015;\r\n\r\nfunction diags(d) {\r\n  push();\r\n  let dangus = randomHalf();\r\n  \r\n  for (let i = -d + 1; i &lt; d; i++) {\r\n    let x0 = constrain(map(i, 0, d, 0, 1), 0, 1);\r\n    let x1 = constrain(map(i, 0, d, 1, 2), 0, 1);\r\n    let y0 = constrain(map(i, -d, 0, 1, 0), 0, 1);\r\n    let y1 = constrain(map(i, 0, d, 1, 0), 0, 1);\r\n    if (isNaN(x0) || isNaN(x1) || isNaN(y0) || isNaN(y1)) console.log('dingus');\r\n    strokeWeight(Sw);\r\n    line(x0,y0,x1,y1);\r\n  }\r\n  unRandomHalf(dangus);\r\n  pop();\r\n}\r\n\r\nfunction halfdiags(d) {\r\n  push();\r\n  let dangus = randomHalf();\r\n  \r\n  for (let i = 0; i &lt; d; i++) {\r\n    let x0 = constrain(map(i, 0, d, 0, 1), 0, 1);\r\n    let x1 = constrain(map(i, 0, d, 1, 2), 0, 1);\r\n    let y0 = constrain(map(i, -d, 0, 1, 0), 0, 1);\r\n    let y1 = constrain(map(i, 0, d, 1, 0), 0, 1);\r\n    if (isNaN(x0) || isNaN(x1) || isNaN(y0) || isNaN(y1)) console.log('dingus');\r\n    strokeWeight(Sw);\r\n    line(x0,y0,x1,y1);\r\n    \r\n  }\r\n  unRandomHalf(dangus);\r\n  pop();\r\n}\r\n\r\nfunction tri(d) {\r\n  push();\r\n  let dangus = randomHalf();\r\n  \r\n  for (let i = 0; i &lt; d; i++) {\r\n    let x0 = constrain(map(i, 0, d, 0, 1), 0, 1);\r\n    let x1 = constrain(map(i, 0, d, 0.5, 1), 0, 1);\r\n    let y0 = 0; \/\/constrain(map(i, -d, 0, 1, 0), 0, 1);\r\n    let y1 = constrain(map(i, 0, d, 1, 0), 0, 1);\r\n    if (isNaN(x0) || isNaN(x1) || isNaN(y0) || isNaN(y1)) console.log('dingus');\r\n    strokeWeight(Sw);\r\n    line(x0,y0,x1,y1);\r\n  }\r\n  \r\n  unRandomHalf(dangus);\r\n  pop();\r\n}\r\n\r\nfunction f0() {\r\n  diags(2);\r\n}\r\nfunction f1() {\r\n  diags(5);\r\n}\r\nfunction f2() {\r\n  diags(7);\r\n}\r\nfunction f3() {\r\n  diags(11);\r\n}\r\n\r\nfunction f4() {\r\n  halfdiags(2);\r\n}\r\nfunction f5() {\r\n  halfdiags(5);\r\n}\r\nfunction f6() {\r\n  halfdiags(7);\r\n}\r\nfunction f7() {\r\n  halfdiags(11);\r\n}\r\n\r\nfunction f8() {\r\n  halfdiags(1);\r\n}\r\n\r\nfunction f9() {\r\n  tri(5);\r\n}\r\nfunction f10() {\r\n  tri(7);\r\n}\r\n\r\nfunction f11() {\r\n  diags(4);\r\n}\r\nfunction f12() {\r\n  halfdiags(4);\r\n}\r\n\r\nfunction para(d) {\r\n  push();\r\n  let dangus = randomQuarter();\r\n  \r\n  for (let i = 1; i &lt; d; i++) {\r\n    let x0 = map(i, 0, d, 0, 1);\r\n    let x1 = 1;\r\n    let y0 = 0;\r\n    let y1 = map(i, 0, d, 0, 1);\r\n    if (isNaN(x0) || isNaN(x1) || isNaN(y0) || isNaN(y1)) console.log('dingus');\r\n    strokeWeight(Sw);\r\n    line(x0,y0,x1,y1);\r\n  }\r\n  \r\n  unRandomQuarter(dangus);\r\n  pop();\r\n}\r\n\r\nfunction f13() {\r\n  para(3);\r\n}\r\nfunction f14() {\r\n  para(5);\r\n}\r\n\r\nlet sectionFunctions = [f0, f1, f1, f2, f2, f3, f4, f5, f5, f6, f6, f7, f8, f0, f1, f1, f2, f2, f3, f4, f5, f5, f6, f6, f7, f8, f9, f10, f11, f12, f0, f1, f1, f2, f2, f3, f4, f5, f5, f6, f6, f7, f8, f0, f1, f1, f2, f2, f3, f4, f5, f5, f6, f6, f7, f8, f9, f10, f11, f12, f13, f14];\r\n\r\nfunction setup() {\r\n  if (dosvg) createCanvas(2*edgeRoom + Wm*Lm, 2*edgeRoom + Hm*Lm, SVG);\r\n  else createCanvas(2*edgeRoom + Wm*Lm, 2*edgeRoom + Hm*Lm);\r\n  noLoop();\r\n}\r\n\r\nfunction draw() {\r\n  drawVera();\r\n  \/*push();\r\n  translate(10,100);\r\n  scale(0.99,0.5);\r\n  line(0,0,width,height);\r\n  pop();*\/\r\n}\r\n\r\nfunction drawVera() {\r\n  \/\/let bg = 240;\r\n  \/\/background(bg);\r\n  clear();\r\n  stroke(0);\r\n  \/\/strokeWeight(0.015);\r\n  strokeWeight(Sw);\r\n  noFill();\r\n  for (let i = 0; i &lt; Hm; i++) {\r\n    for (let j = 0; j &lt; Wm; j++) {\r\n      \/*line(edgeRoom + j*Lm, edgeRoom + i*Lm,\r\n          edgeRoom + j*Lm + Lm*0.6, edgeRoom + i*Lm + Lm*0.8);*\/\r\n      push();\r\n      translate(edgeRoom + j*Lm, edgeRoom + i*Lm);\r\n      scale(Lm);\r\n      \/\/line(0,0,0.8,0.8);\r\n      drawSection();\r\n      \r\n      scale(1\/Lm);\r\n      translate(-edgeRoom - j*Lm, -edgeRoom - i*Lm);\r\n      pop();\r\n    }\r\n  }\r\n  \/\/fill(bg);\r\n  \/\/noStroke();\r\n  \/\/rect(0,0,edgeRoom,height);\r\n  \/\/rect(width - edgeRoom,0,edgeRoom,height);\r\n}\r\n\r\nfunction keyPressed() {\r\n  saveSVG(\"vera.svg\");\r\n}\r\n\r\nfunction drawSection() {\r\n  \/\/line(0, 0, 0.8, 0.8);\r\n  let r = Math.random();\r\n  let numSections = r &lt; 0.02 ? 0 : r &lt; 0.1 ? 1 : r &lt; 0.8 ? 2 : 3;\r\n  for (let s = 0; s &lt; numSections; s++) {\r\n    let i = Math.floor(Math.random() * sectionFunctions.length);\r\n    let f = sectionFunctions[i];\r\n    f();\r\n  }\r\n}\r\n\r\nfunction randomHalf() {\r\n  let vertical = Math.random() &lt; 0.5 ? 1 : 0;\r\n  let horizontal = 1 - vertical;\r\n  let offset = Math.random() &lt; 0.5 ? 1 : 0;\r\n  let fh = Math.random() &lt; 0.5; \/\/flip horizontal\r\n  let fv = Math.random() &lt; 0.5; \/\/flip vertical\r\n  \r\n  scale(1 - 0.5*vertical, 1 - 0.5*horizontal);\r\n  translate(vertical * offset, horizontal * offset);\r\n  if (fh) {\r\n    scale(-1, 1);\r\n    translate(-1, 0);\r\n  }\r\n  if (fv) {\r\n    scale(1, -1);\r\n    translate(0, -1);\r\n  }\r\n  \r\n  return {vertical, horizontal, offset, fh, fv};\r\n}\r\n\r\nfunction unRandomHalf(dangus) {\r\n  let {vertical, horizontal, offset, fh, fv} = dangus;\r\n  \r\n  if (fv) {\r\n    translate(0, 1);\r\n    scale(1, -1);\r\n  }\r\n  if (fh) {\r\n    translate(1, 0);\r\n    scale(-1, 1);\r\n  }\r\n  translate(-vertical * offset, -horizontal * offset);\r\n  scale(1 \/ (1 - 0.5*vertical), 1 \/ (1 - 0.5*horizontal));\r\n}\r\n\r\nfunction randomQuarter() {\r\n  let x = Math.random() &lt; 0.5 ? 1 : 0;\r\n  let y = Math.random() &lt; 0.5 ? 1 : 0;\r\n  let f1 = Math.random() &lt; 0.5;\r\n  let f2 = Math.random() &lt; 0.5;\r\n  \r\n  scale(0.5,0.5);\r\n  translate(x, y);\r\n  if (f1) {\r\n    scale(-1, 1);\r\n    translate(-1, 0);\r\n  }\r\n  if (f2) {\r\n    scale(1, -1);\r\n    translate(0, -1);\r\n  }\r\n  \r\n  return {x, y, f1, f2};\r\n}\r\n\r\nfunction unRandomQuarter(z) {\r\n  let {x, y, f1, f2} = z;\r\n  \r\n  if (f2) {\r\n    translate(0, 1);\r\n    scale(1, -1);\r\n  }\r\n  if (f1) {\r\n    translate(1, 0);\r\n    scale(-1, 1);\r\n  }\r\n  translate(-x, -y);\r\n  scale(2,2);\r\n}\r\n<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I dunno if I&#8217;m crazy, but I think the p5 svg thing breaks the pop() function, so I learned how to invert my goddang transformations. let dosvg = true; const edgeRoom = 30; const Wm = 12; const Hm = 12; const Lm = 40; const Sw = dosvg ? 0.8 : 0.015; function diags(d) &hellip; <a href=\"https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/dinkolas\/09\/08\/dinkolas-molnarrecode\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;dinkolas &#8211; MolnarRecode&#8221;<\/span><\/a><\/p>\n","protected":false},"author":14,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[5],"tags":[],"_links":{"self":[{"href":"https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-json\/wp\/v2\/posts\/549"}],"collection":[{"href":"https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-json\/wp\/v2\/users\/14"}],"replies":[{"embeddable":true,"href":"https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-json\/wp\/v2\/comments?post=549"}],"version-history":[{"count":3,"href":"https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-json\/wp\/v2\/posts\/549\/revisions"}],"predecessor-version":[{"id":554,"href":"https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-json\/wp\/v2\/posts\/549\/revisions\/554"}],"wp:attachment":[{"href":"https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-json\/wp\/v2\/media?parent=549"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-json\/wp\/v2\/categories?post=549"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-json\/wp\/v2\/tags?post=549"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}