@tsparticles/path-curl-noise
Version:
tsParticles curl noise path
36 lines (35 loc) • 1.55 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CurlNoiseGenerator = void 0;
const engine_1 = require("@tsparticles/engine");
const simplex_noise_1 = require("@tsparticles/simplex-noise");
const defaultOptions = {
speed: 0.2,
step: 250,
}, double = 2;
class CurlNoiseGenerator {
constructor() {
const simplex = new simplex_noise_1.SimplexNoise();
this._simplex = simplex.noise2d;
this.options = (0, engine_1.deepExtend)({}, defaultOptions);
}
generate(particle) {
const pos = particle.getPosition(), { speed, step } = this.options, x = pos.x / step, y = pos.y / step, eps = 0.001, n1a = this._simplex.noise(x, y + eps), n2a = this._simplex.noise(x, y - eps), a = (n1a - n2a) / (double * eps), n1b = this._simplex.noise(x + eps, y), n2b = this._simplex.noise(x - eps, y), b = (n1b - n2b) / (double * eps);
particle.velocity.x = 0;
particle.velocity.y = 0;
return engine_1.Vector.create(speed * a, speed * -b);
}
init(container) {
const sourceOptions = container.actualOptions.particles.move.path.options;
this.options.seed = sourceOptions?.seed;
this.options.speed =
(sourceOptions?.speed ?? defaultOptions.speed) * container.retina.pixelRatio;
this.options.step = sourceOptions?.step ?? defaultOptions.step;
this._simplex.seed(this.options.seed ?? (0, engine_1.getRandom)());
}
reset() {
}
update() {
}
}
exports.CurlNoiseGenerator = CurlNoiseGenerator;