const toRad = (x) => x * (Math.PI / 180); const dist = [200, 330, 450]; const numb = [8, 15, 26]; const radius = [64,58,50]; let userNum = 0; function render(users) { userNum = 0; const canvas = document.getElementById("canvas"); const ctx = canvas.getContext("2d"); const width = canvas.width; const height = canvas.height; // fill the background ctx.fillStyle = "#282c37"; ctx.fillRect(0, 0, width, height); loadImage(ctx, ownProfilePic, (width/2)-110, (height/2)-110, 110, 110); // loop over the layers for (var layerIndex=0; layerIndex<3; layerIndex++) { //let layerIndex = get_layer(num); const angleSize = 360 / numb[layerIndex]; // loop over each circle of the layer for (let i = 0; i < numb[layerIndex]; i++) { // We need an offset or the first circle will always on the same line and it looks weird // Try removing this to see what happens const offset = layerIndex * 30; // i * angleSize is the angle at which our circle goes // We need to converting to radiant to work with the cos/sin const r = toRad(i * angleSize + offset); const centerX = Math.cos(r) * dist[layerIndex] + width / 2; const centerY = Math.sin(r) * dist[layerIndex] + height / 2; loadImage( ctx, users[userNum][1]["pic"], centerX - radius[layerIndex], centerY - radius[layerIndex], radius[layerIndex], radius[layerIndex] ); userNum++; // if we are trying to render a circle but we ran out of users, just exit the loop. We are done. if (userNum>=users.length) break; } } ctx.fillStyle = "#DDDDDD"; ctx.fillText("@sonnenbrandi@mieke.club mit lieben Grüßen an Duiker101", width-300, height-15, 290) }; function get_layer(i) { if (i