plot = createMathCell({
visibility,
style: "width: 9in; height: 9in",
inputs,
config: (lib, { id }) => {
var radius = lib.getVariable(id, "radius");
var height = lib.getVariable(id, "height");
return {
type: "threejs",
axesLabels: ["ℜζ", "ℑζ", "q"],
xMin: -radius,
xMax: radius,
yMin: -radius,
yMax: radius,
zMin: 0,
zMax: height
};
},
data: (lib, { id }) => {
var ℜz = lib.getVariable(id, "ℜz");
var ℑz = lib.getVariable(id, "ℑz");
var radius = lib.getVariable(id, "radius");
var height = lib.getVariable(id, "height");
var q = lib.getVariable(id, "q");
var θ = lib.getVariable(id, "θ");
var z = math.complex(ℜz, ℑz);
var r = math.sub(1, z);
var ζ_z = ζ(z, 1);
var ζ_r = ζ(r, 1);
var ζ_H_q = ζ(z, q);
var χ_r = math.div(ζ_r, ζ_z);
const band_radius = 0.01;
return [
lib.parametric(
function (ℜa) {
const ζ_ = ζ(z, ℜa);
return [math.real(ζ_), math.imag(ζ_), ℜa];
},
[1, 100, 100],
{
color: "black"
}
),
lib.parametric(
function (ℜa) {
const ζ_ = ζ(z, ℜa);
let v = ζ(z, ℜa);
v = math.sub(ζ_, χ_r);
v = math.exp(math.complex(0, ℑz * θ * π));
v = math.add(ζ_, χ_r)
return [math.real(v), math.imag(v), ℜa];
},
[50, 100, 1000],
{
color: "red"
}
),
lib.parametric(
function (ℜa) {
const ζ_ = ζ(z, ℜa);
return [math.real(ζ_), math.imag(ζ_), ℜa];
},
[1, 100, 1000],
{
color: "orange"
}
),
lib.sphere(radius / 80, {
center: [math.real(ζ_H_q), math.imag(ζ_H_q), q],
color: "red"
})
];
}
})