{ "name": "4th", "id": "ghv6KpRCcSGQ6YcFy", "sources": { "main": "\nexport var colors = array(3)\n\ncolors[0] = array(3)\ncolors[0][0] = .15\n\ncolors[1] = array(3)\ncolors[1][0] = colors[1][1] = colors[1][2] = .07\n\ncolors[2] = array(3)\ncolors[2][2] = .1\n\n\nnumSparks = 2\n\n// These constants set the bounds for a newly spawned spark's initial velocity\nISEM = 0.45 // ISEM = Initial Spark Energy Minimum\nISER = 0.26 * ISEM // ISER = Initial Spark Energy Range\n\n// Each spark has half the strip distance to cover, so halve the friction\nfriction = 1 / pixelCount / 2\nsparks = array(numSparks) // Energy of each spark\nsparkX = array(numSparks) // Positions of each sprak\npixels = array(pixelCount) // rockets\npixels2 = array(pixelCount) // sparks\n\nexport function sliderSpacing(v) {\n spacing = 1 + floor(v*5)\n}\n\nexport function beforeRender(delta) {\n t1 = time(.1)\n \n delta *= .1 \n \n for (i = 0; i < pixelCount; i++) {\n \n pixels[i] *= .9\n \n pixels2[i] *= .98\n }\n \n // Examining each spark...\n for (i = 0; i < numSparks; i++) {\n // If a spark has fizzled out...\n if (abs(sparks[i]) < 0.001) {\n // Set this spark's energy to a value between ISEM and (ISEM + ISER)\n sparks[i] = ISEM + random(ISER)\n // Randomly set half the sparks to go left (IE negative energy)\n if (random(1) > 0.5) sparks[i] *= -1\n // Set the spark's position back to the center\n sparkX[i] = random(pixelCount)\n }\n\n // Slow it down (lose some energy) with friction; preserve the sign\n sparks[i] -= friction * delta * (sparks[i] > 0 ? 1 : -1)\n \n /*\n Advance the position of each spark proportional to how much time has \n passed. sparks[i] is signed, so negative energy reduces its position.\n Notice we opted to not use the square of sparks[i] this time. You can,\n but don't forget to add the sign back:\n\n sparkX[i] += pow(sparks[i], 2) * delta * (sparks[i] > 0 ? 1 : -1)\n\n As-is, it functions more like a velocity, where Δx = v ⋅ Δt\n */\n sparkX[i] = mod(sparkX[i] + sparks[i] * delta, pixelCount)\n \n // Since negative energy is allowed, we need to drop the sign when \n // accumulating the heat\n \n s = sparks[i]\n x = sparkX[i]\n if (abs(s) > .05) {\n pixels[x] = 1\n } else if (abs(s) > .0001) {\n x1 = mod(x - (abs(s)/.01 - 5), pixelCount)\n x2 = mod(x + (abs(s)/.01 - 5), pixelCount)\n pixels2[x1] = random(2)\n pixels2[x2] = random(2)\n }\n \n \n }\n \n}\n\nexport function render(index) {\n \n\n ci = floor(index / spacing / 3) % 3\n r = colors[ci][0]\n g = colors[ci][1]\n b = colors[ci][2]\n \n s = pixels[index]\n r += s\n g += s/3\n \n if (pixels2[index] > random(1)) {\n r = g = b = 1;\n }\n \n rgb(r,g,b)\n}" }, "preview": "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" }