{"componentChunkName":"component---src-templates-blog-post-js","path":"/sketches/day082","result":{"data":{"site":{"id":"Site","siteMetadata":{"title":"Creative code daily"}},"src":{"id":"70a27ca2-7224-5275-8431-8a5cd1b5a413","publicURL":"/static/day082-b524447d823c98b3cc732aa330cc8ad3.pde","childRawCode":{"id":"70a27ca2-7224-5275-8431-8a5cd1b5a413 >>> RawCode","content":"/**\n * Name: Day 82 :: global network\n */\n\nimport com.hamoid.*;\n\nboolean isReadyForExport = true;\n\nVideoExport export;\n\nfloat maxFrameNumber = 720; // The number of frame to record\n\nvoid setup() {\n  size(700, 700, P3D);\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\nvoid reset() {\n  noStroke();\n  background(0);\n}\n\nPVector lissajouPoint(float i, float freqX, float freqY) {\n  float angle = radians(i);\n  float x = TWO_PI * sin(angle * 7 + PI * 0.5) * cos(angle * (freqX));\n  float y = TWO_PI * sin(angle * 5) * cos(angle * (freqY));\n  return new PVector(x, y);\n}\n\nfloat easeInOutQuad(float t) {\n  println(t);\n  return t < .5 ? 2*t*t : (-1+(4-2*t)*t);\n}\n\n\nvoid animation() {\n  float n2 = frameCount / maxFrameNumber;\n\n  noFill();\n\n  float nRadius = 250;\n  //if ((frameCount % 30) > 25) nRadius = 300;\n\n  float angleY = PI * n2;\n  //if ((frameCount % 40) > 10) angleY = TWO_PI * n2 + PI;\n\n  translate(width * 0.5, height * 0.5);\n  rotateY(angleY);\n  rotateX(-PI * 0.3);\n\n  ArrayList<PVector> points = new ArrayList<PVector>();\n  stroke(#ffffff);\n\n  for (int j = 1; j < 10; j++) {\n    for (int i = 0; i < 300; i++) {\n      float f = 0.1 * frameCount + 0.1 * i + j * 0.1;\n      float n = f % maxFrameNumber;\n\n      PVector p1 = lissajouPoint(n, 10 - j, j + 3);\n      float radius = nRadius * (0.5 + noise(p1.x * 3, p1.y * 3));\n      \n      float yShift = (n2 * 0.15) * TWO_PI;\n      float xShift = (0.5 + j * 0.4) * TWO_PI;\n\n      PVector pSphere = new PVector(radius * cos(p1.x + xShift) * cos(p1.y + yShift), radius * sin(p1.x + xShift) * cos(p1.y  + yShift), radius * sin(p1.y  + yShift));\n      points.add(pSphere);\n    }\n  }\n\n  int nbPoints = points.size();\n  for (int i = 0; i < nbPoints - 1; i++) {\n    PVector p1 = points.get(i);\n    for (int j = i + 1; j < nbPoints; j++) {\n      PVector p2 = points.get(j);\n      float d = p1.dist(p2);\n      if (d < 30) {\n        //float amt = noise(p1.x * 0.01, p1.y * 0.01, p1.z * 0.01);\n        color c = #ffffff;\n        stroke(red(c), green(c), blue(c), 100);\n        strokeWeight(0.9);\n        line(p1.x, p1.y, p1.z, p2.x, p2.y, p2.z);\n      }\n    }\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":"52d70dd7-074a-5cb6-a3e7-21f9d354980f","publicURL":"/static/out-237639ff117ba51856cbe3acdca14bce.mp4"},"screenshot":{"id":"3236691c-6d0e-5cd4-8427-8671e47f0e5e","publicURL":"/static/screenshot-2-7eee18fc29d6910e333b365dafbb96f5.png"}},"pageContext":{"nameRegex":"/day082/","name":"day082"}}}