{"componentChunkName":"component---src-templates-blog-post-js","path":"/sketches/day099","result":{"data":{"site":{"id":"Site","siteMetadata":{"title":"Creative code daily"}},"src":{"id":"49f34920-0159-5b3b-8fd4-68e5d4d0e725","publicURL":"/static/day099-338468c9f902aa571893d17751bdfebd.pde","childRawCode":{"id":"49f34920-0159-5b3b-8fd4-68e5d4d0e725 >>> RawCode","content":"/**\n * Name: <insert name here>\n */\n\nimport com.hamoid.*;\n\nboolean isReadyForExport = true;\n\nVideoExport export;\n\nfloat maxFrameNumber = 600; // The number of frame to record\n\nvoid setup() {\n  size(700, 700, P2D);\n  smooth(8);\n  pixelDensity(displayDensity()); // HiDPI, comment if too slow\n\n  // colorMode(HSB, 100); // uncomment if you plan to play with colors\n\n  if (isReadyForExport) {\n    export = new VideoExport(this, \"out.mp4\");\n    export.setFrameRate(60);\n    export.startMovie();\n  }\n\n  ellipseMode(CENTER);\n}\n\nvoid reset() {\n  noStroke();\n  background(255);\n}\n\nvoid renderCircle(int d, PVector p, float r, float a, float n) {\n  if (d < 0) return;\n  stroke(0);\n  noFill();\n  circle(p.x, p.y, 2 * r);\n\n  PVector newP = new PVector(p.x + r * cos(a * sin(n * TWO_PI)), p.y + r * sin(a *  sin(n * TWO_PI)));\n\n  line(p.x, p.y, newP.x, newP.y);\n\n  fill(0);\n  noStroke();\n  circle(newP.x, newP.y, 5);\n\n  renderCircle(d - 1, newP, r * 1.1, a + PI * 0.1, pow(n, 1.05));\n}\n\nfloat easeInOutQuad(float t) {\n  return t<.5 ?\n    2*t*t :\n    -1+(4-2*t)*t;\n}\n\nvoid animation() {\n  float n = frameCount / maxFrameNumber;\n  float nEased = easeInOutQuad(n);\n\n  translate(width * .5, height * .5);\n\n  for (int i = 0; i < 20; i++) {\n    rotate(PI * 0.1);\n    renderCircle(20, new PVector(0, 0), 10, PI * 0.5, nEased);\n  }\n}\n\nvoid draw() {\n  reset();\n  animation();\n\n  if (isReadyForExport) {\n    export.saveFrame();\n    if (frameCount == 1) saveFrame(\"screenshot-1.png\");\n    if (frameCount == Math.floor(maxFrameNumber / 3)) saveFrame(\"screenshot-2.png\");\n    if (frameCount == 2 * Math.floor(maxFrameNumber / 3)) saveFrame(\"screenshot-3.png\");\n  }\n\n  if (frameCount >= maxFrameNumber) {\n    if (isReadyForExport) {\n      export.endMovie();\n    }\n    exit();\n  }\n}\n"}},"video":{"id":"2471f1a0-0ae0-50ed-986c-f6c147990069","publicURL":"/static/out-67f252b8d9572ac2c52ff8c832a8a46a.mp4"},"screenshot":{"id":"8bccde60-b4b1-5e75-bb74-fcab22a42122","publicURL":"/static/screenshot-2-08f69626e4d070ce9e144d0375e11b95.png"}},"pageContext":{"nameRegex":"/day099/","name":"day099"}}}