xxxxxxxxxx
68
let offX = 0;
function setup() {
createCanvas(400, 400);
}
function draw() {
background(220);
stroke(0);
strokeWeight(2);
noFill();
beginShape();
for (let i = 0; i < width; i++) {
vertex(a(i).x, a(i).y);
}
endShape();
offX+= 0.00001;
}
function a(t) {
let order = 5; // Adjust the order of the Hilbert Curve
let numPoints = pow(2, order);
let index = Math.floor(t * numPoints);
let point = hilbertCurve(index, order);
let x = map(point.x, 0, numPoints, 0, width);
let y = map(point.y, 0, numPoints, 0, height);
return createVector(x, y);
}
// Function to generate points on the Hilbert Curve
function hilbertCurve(index, order) {
let numPoints = pow(2, order);
if (order === 0) {
return createVector(0, 0);
}
let length = width / numPoints;
let halfLength = length / 2;
let points = [
createVector(0, 0),
createVector(0, halfLength),
createVector(halfLength, halfLength),
createVector(halfLength, 0)
];
let point = points[index % 4];
let nextOrder = order - 1;
let nextIndex = Math.floor(index / 4);
let childPoint = hilbertCurve(nextIndex, nextOrder);
let transformedPoint;
if (index < 2) {
transformedPoint = createVector(childPoint.y, childPoint.x);
} else {
transformedPoint = childPoint.copy();
}
transformedPoint.mult(halfLength);
transformedPoint.add(point);
return transformedPoint;
}