texture = {
let n = 400;
let step = Math.PI / n;
let theta_min = -Math.PI;
let theta_max = Math.PI;
let phi_min = step;
let phi_max = Math.PI;
let w = 2 * n;
let h = n;
let bail = 100;
let canvas = d3
.create('canvas')
.attr('width', w)
.attr('height', h);
let context = canvas.node().getContext("2d");
let canvasData = context.createImageData(w, h);
let j = 0;
for (let theta = theta_min; theta < theta_max; theta = theta + step) {
let i = 0;
for (let phi = phi_min; phi < phi_max; phi = phi + step) {
let d = Math.tan(phi / 2);
let x = Math.cos(theta) / d;
let y = Math.sin(theta) / d;
let info = P_orbitInfo([x, y], bail);
let idx = (j + i * w) * 4;
let c = color(info, bail);
canvasData.data[idx + 0] = c[0];
canvasData.data[idx + 1] = c[1];
canvasData.data[idx + 2] = c[2];
canvasData.data[idx + 3] = 255;
i = i + 1;
}
j = j + 1;
}
context.putImageData(canvasData, 0, 0);
return canvas;
}