Skip to content

Instantly share code, notes, and snippets.

@velzie
Last active September 25, 2020 02:23
Show Gist options
  • Save velzie/5f878deac62418b3420a68c5b94ed41d to your computer and use it in GitHub Desktop.
Save velzie/5f878deac62418b3420a68c5b94ed41d to your computer and use it in GitHub Desktop.
var numPointsSlider = 0, turnFractionSlider = 0;
var LastNumPoints = 0, LastTurnFraction = 0;
var numPoints = 0, turnFraction = 0;
var points = [];
var powSlider;
var LastPower;
var speedSlider;
var angleOffset = 0;
function setup(){
createCanvas(800,800);
numPointsSlider = createSlider(0,10000,10);
turnFractionSlider = createSlider(0,100,50);
powSlider = createSlider(-20,20,10);
speedSlider = createSlider(-20,20,1);
}
function draw(){
let xpower = powSlider.value() / 20;
numPoints = numPointsSlider.value();
turnFraction = turnFractionSlider.value() / 100;
turnFraction = (turnFraction + 0.0001 % 1)
angleOffset = (angleOffset + speedSlider.value() / 480 * deltaTime % 1)
turnFraction = (1 + sqrt(5)) / 2;
background(240);
fill(0,0,0);
for (let i = 0; i < points.length; i++){
ellipse(points[i].x * 200 + width / 2,points[i].y * 200+ height / 2,3)
}
if (numPoints != LastNumPoints || turnFraction != LastTurnFraction || xpower != LastPower || true){
points = [];
for (let i = 0; i < numPoints; i++){
var dst = pow(i / (numPoints - 1),xpower);
var angle = 2 * PI * turnFraction * i;
var x = dst * cos(angle + angleOffset);
var y = dst * sin(angle + angleOffset);
points.push({"x" : x, "y" : y});
}
LastNumPoints = numPoints;
LastTurnFraction = turnFraction;
LastPower = xpower;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment