xxxxxxxxxx
158
let noise4;
let pg;
let lowN, highN;
// Just for non-looping demo
let fNoiseScale = 0.0035;
function setup() {
canvas = createCanvas(600, 600);
pg = createGraphics(200, 200);
noise4 = createNoise4D();
render(pg);
let nbr = 1000000;
//test1d(nbr);
// test2d(nbr);
// test3d(nbr);
//test4d(nbr);
}
function draw() {
for (let i = 0; i < 3; i++)
for (let j = 0; j < 3; j++) image(pg, i * 200, j * 200);
stroke(255, 0, 0);
strokeWeight(1.5);
line(0, 200, 600, 200);
line(0, 400, 600, 400);
line(200, 600, 200, 0);
line(400, 600, 400, 0);
}
function mouseClicked() {
noise4 = createNoise4D();
render(pg);
}
function render(pg) {
let ab = Math.random() * Math.PI;
let cd = Math.random() * Math.PI;
lowN = highN = undefined;
let time = millis();
pg.background(0);
let fRds = 150;
for (let x = 0; x < pg.width; x++) {
let fNX = x / pg.width;
let fRdx = fNX * TAU;
let a = fRds * Math.sin(fRdx + ab);
let b = fRds * Math.cos(fRdx + ab);
for (let y = 0; y < pg.height; y++) {
let fNY = y / pg.height;
let fRdy = fNY * TAU;
let c = fRds * Math.sin(fRdy + cd);
let d = fRds * Math.cos(fRdy + cd);
let n = noise4(
123 + a * fNoiseScale,
231 + b * fNoiseScale,
312 + c * fNoiseScale,
273 + d * fNoiseScale
);
if (lowN && highN) {
lowN = Math.min(lowN, n);
highN = Math.max(highN, n);
} else {
lowN = highN = n;
}
//let bright = (Math.min(Math.max(2*(n -.5)+.5,0),1)*255)<<0;
//n = Math.sqrt(1+n)
let bright = map(n, -1, 1, 0, 255);
pg.stroke(bright);
pg.strokeWeight(1);
pg.point(x, y);
}
}
}
function test1d(nbr) {
let n = createNoise2D();
let a = 0.123456789,
da = 0.003;
let minV = n(a, 100);
let maxV = minV;
let time = millis();
for (let i = 0; i < nbr; i++) {
a += da;
let v = n(a, 100);
minV = Math.min(v, minV);
maxV = Math.max(v, maxV);
}
console.log(`1D range ${minV} to ${maxV} in ${millis() - time} ms`);
}
function test2d(nbr) {
let n = createNoise2D();
let a = 0.123456789,
da = 0.003;
let b = 0.987654321,
db = 0.003;
let minV = n(a, b);
let maxV = minV;
let time = millis();
for (let i = 0; i < nbr; i++) {
a += da;
b += db;
let v = n(a, b);
minV = Math.min(v, minV);
maxV = Math.max(v, maxV);
}
console.log(`2D range ${minV} to ${maxV} in ${millis() - time} ms`);
}
function test3d(nbr) {
let n = createNoise3D();
let a = 0.123456789,
da = 0.003;
let b = 0.987654321,
db = 0.003;
let c = 0.987654321,
dc = 0.003;
let minV = n(a, b, c);
let maxV = minV;
let time = millis();
for (let i = 0; i < nbr; i++) {
a += da;
b += db;
c += dc;
let v = n(a, b, c);
minV = Math.min(v, minV);
maxV = Math.max(v, maxV);
}
console.log(`3D range ${minV} to ${maxV} in ${millis() - time} ms`);
}
function test4d(nbr) {
let n = createNoise3D();
let a = 0.123456789,
da = 0.003;
let b = 0.987654321,
db = 0.003;
let c = 0.678954321,
dc = 0.003;
let d = 0.543216789,
dd = 0.003;
let minV = n(a, b, c, d);
let maxV = minV;
let time = millis();
for (let i = 0; i < nbr; i++) {
a += da;
b += db;
c += dc;
d += dd;
let v = n(a, b, c);
minV = Math.min(v, minV);
maxV = Math.max(v, maxV);
}
console.log(`4D range ${minV} to ${maxV} in ${millis() - time} ms`);
}