function createREGLInstance () {
const container = document.createElement('div');
container.classList.add("container");
container.style.position = "relative";
container.style.width = w + 'px';
if (width > breakpoint) { container.style.height = h + 'px'; }
const glCanvas = document.createElement('canvas');
glCanvas.classList.add("glCanvas");
glCanvas.style.position = "absolute";
glCanvas.style.top = 0
glCanvas.style.left = 0;
glCanvas.style.width = w;
glCanvas.style.height = h;
glCanvas.style.zIndex = 1;
glCanvas.width = w;
glCanvas.height = h;
const cameraDiv = document.createElement('div');
cameraDiv.classList.add("cameraDiv");
cameraDiv.style.position = "absolute";
cameraDiv.style.top = 0
cameraDiv.style.left = 0;
cameraDiv.style.width = 2 * w / 3 + 'px';
cameraDiv.style.height = h + 'px';
cameraDiv.style.zIndex = 2;
if (width > breakpoint) {
cameraDiv.style.display = "block;"
}
else {
cameraDiv.style.display = "none";
}
const topCanvas = document.createElement('canvas');
topCanvas.classList.add("topCanvas");
topCanvas.style.bottom = 0
topCanvas.style.left = w - inset_w +'px';
topCanvas.style.width = inset_w + 'px';
topCanvas.style.height = inset_h + 'px';
topCanvas.style.zIndex = 2;
topCanvas.width = inset_w;
topCanvas.height = inset_h;
const controls = document.createElement('div');
controls.classList.add("controls");
if (width > breakpoint) {
controls.style.position = "absolute";
controls.style.top = 0;
controls.style.left = w - inset_w +'px';
controls.style.width = inset_w + 'px';
controls.style.height = inset_h + 'px';
}
else {
controls.style.position = "relative";
controls.style.width = "100%";
}
controls.style.zIndex = 3;
function addLabel(text) {
let d = document.createElement('span');
let n = document.createTextNode(text);
d.appendChild(n);
return d
}
function addText(text) {
let d = document.createElement('p');
let n = document.createTextNode(text);
d.appendChild(n);
return d
}
controls.appendChild(viewof playToggle);
controls.appendChild(viewof stopToggle);
controls.appendChild(viewof restart);
controls.appendChild(document.createElement('br'));
controls.appendChild(addLabel("Visualization:"));
controls.appendChild(viewof selected_visualization);
controls.appendChild(document.createElement('br'));
controls.appendChild(addLabel("Potential:"));
controls.appendChild(viewof potential_selection);
// let d = document.createElement('div');
// d.classList.add("barrier-slider");
// d.appendChild(document.createElement('br'));
// d.appendChild(addLabel("Barrier Height:"));
// d.appendChild(viewof barrier_height);
// d.appendChild(document.createElement('br'));
// controls.appendChild(d)
if (width > breakpoint) {
controls.appendChild(document.createElement('br'));
controls.appendChild(addText("Click and drag the 3D representation to the left to change the view."))
controls.appendChild(addText("Click and drag the 2D representation below to set the initial wavepacket position and direction. Release to start the simulation."));
}
else {
controls.appendChild(document.createElement('br'));
controls.appendChild(addText("Click and drag above to set the initial wavepacket position and direction. Release to start the simulation."));
}
container.appendChild(glCanvas);
container.appendChild(cameraDiv);
container.appendChild(topCanvas);
container.appendChild(controls);
const regl = createREGL(
Object.assign({canvas: glCanvas, extensions: 'OES_texture_float'}))
regl.cameraDiv = cameraDiv;
regl.canvas = glCanvas;
regl.topCanvas = topCanvas;
regl.container = container;
return regl
}