<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1.0"> <title>Electrons on a sphere - atomic.garden</title> <script src="lib/p5.js"></script> <style> :root { --aside-width: 220px; --aside-height: 270px; } .js { display: none; } .noscript { padding: 10px; } a { color: cornflowerblue; } body { padding: 0; margin: 0; background-color: #1b1b1b; overflow: hidden; display: grid; grid-template-columns: var(--aside-width) auto; color: white; } aside { padding: 20px; height: 100vh; box-sizing: border-box; overflow: scroll; } aside > container { display: flex; flex-wrap: wrap; gap: 12px; } aside button, aside input[type="number"] { font-size: 20px; } aside button { min-width: 27px; } aside input[type="checkbox"] { width: 28px; height: 28px; } aside > container > div { display: flex; flex-wrap: wrap; gap: 5px; } @media screen and (orientation:portrait) { body { grid-template-columns: none; grid-template-rows: auto var(--aside-height); } aside { order: 1; } aside > container { flex-direction: row; } } </style> </head> <body> <aside class="js"> <container> <div> <button onclick="toggle_physics()">Physics</button> <input id="checkbox-physics" type="checkbox" disabled> </div> <form style="display:grid;grid-template-columns:1fr auto;gap:5px;"> <input id="input-charge" type="range" min="-1.5" max="1.5" step="0.25" style="min-width:100px;max-width:128px;" oninput="set_charge(-Math.pow(10, input_charge.valueAsNumber))"> <input type="reset" onclick="input_charge.valueAsNumber = 0; input_charge.oninput();"> </form> <div> <button onclick="toggle_skeleton()">Skeleton</button> <input id="checkbox-skeleton" type="checkbox" disabled> <div></div> <button onclick="toggle_polytope()">Polytope</button> <input id="checkbox-polytope" type="checkbox" disabled> </div> <div> <button id="button-surface-none" onclick="set_surface(SURFACE_NONE)">Hide surface</button> <button id="button-surface-circles" onclick="set_surface(SURFACE_CIRCLES)">Wireframe</button> <button id="button-surface-earth" onclick="set_surface(SURFACE_EARTH)">Earth</button> </div> <div> <button onclick="make_particles(0)">0</button> <button onclick="make_particles(1)">1</button> <button onclick="make_particles(2)">2</button> <button onclick="make_particles(3)">3</button> <button onclick="make_particles(4)">4</button> <button onclick="make_particles(5)">5</button> <button onclick="make_particles(6)">6</button> <button onclick="make_particles(7)">7</button> <button onclick="make_particles(8)">8</button> <button onclick="make_particles(9)">9</button> </div> <div style="display:grid;grid-template-columns:1fr auto;width:100%;"> <input id="input-particles" type="number" min="0" max="360" onkeypress="if (event.key === 'Enter') button_particles.click()"> <button id="button-particles" onclick="make_particles(min(360, max(0, input_particles.valueAsNumber)))">Create</button> </div> </container> </aside> <main> </main> <noscript class="noscript"> This page requires JavaScript. <br> Source code: <a href="https://git.atomic.garden/root/sphere-electrons">https://git.atomic.garden/root/sphere-electrons</a> </noscript> <script src="thomson-problem.js"></script> <script src="sketch.js"></script> <script> document.querySelectorAll(".js").forEach(e => e.style = "display:initial"); const input_charge = document.getElementById("input-charge"); input_charge.oninput(); const button_particles = document.getElementById("button-particles"); </script> </body> </html>