breather = (u0, v0, pos) => {
const u = -urange + 2 * urange * u0;
const v = -vrange + 2 * vrange * v0;
const a = 0.4;
const r = 1 - a * a;
const w = Math.sqrt(r);
const denominator = a * (Math.pow(w * Math.cosh(a * u), 2) + Math.pow(a * Math.sin(w * v), 2));
const x = -u + (2 * r * Math.cosh(a * u) * Math.sinh(a * u)) / denominator;
const y = 2 * w * Math.cosh(a * u) * ((-w * Math.cos(v) * Math.cos(w * v)) - Math.sin(v) * Math.sin(w * v)) / denominator;
const z = 2 * w * Math.cosh(a * u) * ((-w * Math.sin(v) * Math.cos(w * v)) + Math.cos(v) * Math.sin(w * v)) / denominator;
pos.set(x, y, z);
}