sphere-electrons/sketch.js
2025-04-24 07:13:31 +00:00

66 lines
1.2 KiB
JavaScript

let charges = new Map();
let counter = 0;
function setup() {
createCanvas(600, 600, WEBGL);
}
function draw() {
orbitControl();
background(50);
make_lights();
draw_sphere(200, 25);
}
function draw_sphere(radius, n_axis_circles) {
stroke(0x3f);
noFill();
push();
rotateX(TAU / 4);
draw_circles(
radius,
n_axis_circles,
color(0x00, 0x9f, 0xff),
color(0xff, 0x9f, 0x00),
);
pop();
push();
rotateY(TAU / 4);
draw_circles(
radius,
n_axis_circles,
color(0xff, 0x00, 0xff),
color(0x00, 0xff, 0x00),
);
pop();
}
function draw_circles(radius, n_circles, pole_1_color, pole_2_color) {
push();
stroke(pole_1_color);
translate(0, 0, -radius);
point(0, 0);
pop();
for (let i = 1; i < n_circles; i += 1) {
const angle = map(i, 0, n_circles - 1, -TAU / 4, TAU / 4);
const circle_radius = radius * cos(angle);
push();
translate(0, 0, radius * sin(angle));
circle(0, 0, circle_radius * 2);
pop();
}
push();
stroke(pole_2_color);
translate(0, 0, radius);
point(0, 0);
pop();
}
function make_lights() {
let light = createVector(0, 1, -1);
light.normalize();
directionalLight(0x1f, 0x1f, 0x1f, light);
ambientLight(0xbf);
}