initial version
This commit is contained in:
commit
d9cdb5f45e
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
/dist/
|
||||
/node_modules/
|
48
index.html
Normal file
48
index.html
Normal file
@ -0,0 +1,48 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Marching Cubes Test</title>
|
||||
<style>
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.overlay {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
padding: 1rem;
|
||||
background-color: rgba(240, 248, 255, 0.26);
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
font-size: 1.2rem;
|
||||
}
|
||||
.overlay .slider, .overlay .checkbox {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
}
|
||||
.overlay .slider {
|
||||
justify-content: space-between;
|
||||
}
|
||||
.overlay label {
|
||||
min-width: 100px;
|
||||
}
|
||||
.overlay .slider span {
|
||||
min-width: 32px;
|
||||
text-align: right;
|
||||
}
|
||||
.overlay input[type=checkbox] {
|
||||
width: 22px;
|
||||
height: 22px;
|
||||
}
|
||||
.overlay .spacer {
|
||||
height: 1rem;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
</body>
|
||||
</html>
|
6169
package-lock.json
generated
Normal file
6169
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
14
package.json
Normal file
14
package.json
Normal file
@ -0,0 +1,14 @@
|
||||
{
|
||||
"dependencies": {
|
||||
"@babel/preset-env": "^7.16.8",
|
||||
"babel-loader": "^8.2.3",
|
||||
"fractal-noise": "^1.2.0",
|
||||
"html-webpack-plugin": "^5.5.0",
|
||||
"open-simplex-noise": "^2.5.0",
|
||||
"three": "^0.136.0",
|
||||
"webpack": "^5.66.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"webpack-cli": "^4.9.1"
|
||||
}
|
||||
}
|
211
src/index.js
Normal file
211
src/index.js
Normal file
@ -0,0 +1,211 @@
|
||||
import * as THREE from 'three';
|
||||
import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';
|
||||
import { makeNoise3D } from 'open-simplex-noise';
|
||||
import { makeCuboid } from 'fractal-noise';
|
||||
import { cornerIndexAFromEdge, cornerIndexBFromEdge, triangulationTable } from './table';
|
||||
import { mkslider, mkcheckbox, mkspacer } from './interface';
|
||||
|
||||
const noise3D = makeNoise3D(55);
|
||||
|
||||
let DIM = 24;
|
||||
let xMax = DIM + 1;
|
||||
let yMax = DIM + 1;
|
||||
let isoLevel = 7;
|
||||
let grid = [];
|
||||
let mesh;
|
||||
let bbox;
|
||||
|
||||
function to1D( x, y, z ) {
|
||||
return (z * xMax * yMax) + (y * xMax) + x;
|
||||
}
|
||||
|
||||
function to3D( idx ) {
|
||||
const z = idx / (xMax * yMax);
|
||||
idx -= (z * xMax * yMax);
|
||||
const y = idx / xMax;
|
||||
const x = idx % xMax;
|
||||
return [ x, y, z ];
|
||||
}
|
||||
|
||||
let frequency = 0.15;
|
||||
let octaves = 8;
|
||||
let persistence = 0.2;
|
||||
let amplitude = 1;
|
||||
let depthScale = 16;
|
||||
|
||||
function generateGrid() {
|
||||
grid.length = 0;
|
||||
const cube = makeCuboid(DIM + 1, DIM + 1, DIM + 1, noise3D, { frequency, octaves, persistence, amplitude })
|
||||
for (let x = 0; x < DIM + 1; x++) {
|
||||
for (let y = 0; y < DIM + 1; y++) {
|
||||
for (let z = 0; z < DIM + 1; z++) {
|
||||
grid[to1D(x, y, z)] = (cube[x][y][z] + 0.5) * depthScale;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// const center = new THREE.Vector3(DIM / 2, DIM / 2, DIM / 2);
|
||||
// for (let x = 0; x < DIM; x++) {
|
||||
// for (let y = 0; y < DIM; y++) {
|
||||
// for (let z = 0; z < DIM; z++) {
|
||||
// const dist = new THREE.Vector3(x, y, z).distanceTo(center);
|
||||
// grid[to1D(x, y, z)] = dist;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
// console.log(Math.min(...grid));
|
||||
// console.log(Math.max(...grid));
|
||||
}
|
||||
|
||||
function dim4(x, y, z) {
|
||||
return new THREE.Vector4(x, y, z, grid[to1D(x, y, z)]);
|
||||
}
|
||||
|
||||
function interpolateVerts(v1, v2) {
|
||||
const t = (isoLevel - v1.w) / (v2.w - v1.w);
|
||||
const v1xyz = new THREE.Vector3(v1.x, v1.y, v1.z);
|
||||
const v2xyz = new THREE.Vector3(v2.x, v2.y, v2.z);
|
||||
const subtract = v2xyz.clone().sub(v1xyz);
|
||||
|
||||
return v1xyz.add(subtract.multiplyScalar(t))
|
||||
}
|
||||
|
||||
function marchCube() {
|
||||
const geometry = new THREE.BufferGeometry();
|
||||
const positions = [];
|
||||
for (let x = 0; x < DIM; x += 1) {
|
||||
for (let y = 0; y < DIM; y += 1) {
|
||||
for (let z = 0; z < DIM; z += 1) {
|
||||
let cube = [
|
||||
dim4(x, y, z), dim4(x + 1, y, z), dim4(x + 1, y, z + 1), dim4(x, y, z + 1),
|
||||
dim4(x, y + 1, z), dim4(x + 1, y + 1, z), dim4(x + 1, y + 1, z + 1), dim4(x, y + 1, z + 1),
|
||||
];
|
||||
|
||||
let cubeIndex = 0;
|
||||
for (let i = 0; i < 8; i++) {
|
||||
if (cube[i].w < isoLevel) {
|
||||
cubeIndex |= (1 << i);
|
||||
}
|
||||
}
|
||||
|
||||
for (let i = 0; triangulationTable[cubeIndex][i] != -1; i += 3) {
|
||||
for (let tri = 0; tri < 3; tri++) {
|
||||
const a0 = cornerIndexAFromEdge[triangulationTable[cubeIndex][i + tri]];
|
||||
const b0 = cornerIndexBFromEdge[triangulationTable[cubeIndex][i + tri]];
|
||||
const tri0 = interpolateVerts(cube[a0], cube[b0]);
|
||||
positions.push(tri0.x, tri0.y, tri0.z);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
geometry.setAttribute( 'position', new THREE.Float32BufferAttribute( positions, 3 ) );
|
||||
geometry.computeVertexNormals();
|
||||
|
||||
return geometry;
|
||||
}
|
||||
|
||||
function update(setGrid) {
|
||||
if (setGrid) {
|
||||
generateGrid();
|
||||
}
|
||||
mesh.geometry.dispose();
|
||||
const geom = marchCube();
|
||||
mesh.geometry = geom;
|
||||
}
|
||||
|
||||
function guitools() {
|
||||
const gui = document.createElement('div');
|
||||
gui.classList.add('overlay');
|
||||
document.body.appendChild(gui);
|
||||
|
||||
const dimensions = mkslider('Dimensions', 8, 64, 8, DIM, (newval) => {
|
||||
DIM = newval;
|
||||
xMax = newval + 1;
|
||||
yMax = newval + 1;
|
||||
const vhdim = new THREE.Vector3(DIM, DIM, DIM);
|
||||
bbox.max = vhdim;
|
||||
update(true);
|
||||
});
|
||||
gui.appendChild(dimensions);
|
||||
|
||||
const isoset = mkslider('Iso level', 1, depthScale, 1, isoLevel, (newval) => {
|
||||
isoLevel = newval;
|
||||
update(false);
|
||||
});
|
||||
gui.appendChild(isoset);
|
||||
gui.appendChild(mkspacer());
|
||||
|
||||
const freqset = mkslider('Frequency', 0.01, 1, 0.01, frequency, (newval) => {
|
||||
frequency = newval;
|
||||
update(true);
|
||||
});
|
||||
gui.appendChild(freqset);
|
||||
|
||||
const ampset = mkslider('Amplitude', 0.01, 1, 0.01, amplitude, (newval) => {
|
||||
amplitude = newval;
|
||||
update(true);
|
||||
});
|
||||
gui.appendChild(ampset);
|
||||
|
||||
const perset = mkslider('Persistence', 0.01, 1, 0.01, persistence, (newval) => {
|
||||
persistence = newval;
|
||||
update(true);
|
||||
});
|
||||
gui.appendChild(perset);
|
||||
|
||||
const octset = mkslider('Octaves', 1, 16, 1, octaves, (newval) => {
|
||||
octaves = newval;
|
||||
update(true);
|
||||
});
|
||||
gui.appendChild(octset);
|
||||
gui.appendChild(mkspacer());
|
||||
|
||||
const wireframe = mkcheckbox('Wireframe', false, (newval) => {
|
||||
mesh.material.wireframe = newval;
|
||||
});
|
||||
gui.appendChild(wireframe);
|
||||
}
|
||||
|
||||
function init() {
|
||||
const scene = new THREE.Scene();
|
||||
const camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 );
|
||||
const renderer = new THREE.WebGLRenderer();
|
||||
renderer.setSize( window.innerWidth, window.innerHeight );
|
||||
renderer.setClearColor(0x00aaff);
|
||||
document.body.appendChild( renderer.domElement );
|
||||
|
||||
const controls = new OrbitControls(camera, renderer.domElement);
|
||||
camera.position.set( 48, 48, 48 );
|
||||
|
||||
controls.update();
|
||||
function animate() {
|
||||
requestAnimationFrame(animate);
|
||||
controls.update();
|
||||
renderer.render(scene, camera);
|
||||
}
|
||||
|
||||
generateGrid();
|
||||
const geom = marchCube();
|
||||
mesh = new THREE.Mesh(geom, new THREE.MeshNormalMaterial());
|
||||
scene.add(mesh);
|
||||
|
||||
const light = new THREE.DirectionalLight(0xffffff);
|
||||
light.position.set(10, 10, 0);
|
||||
scene.add(light);
|
||||
|
||||
const ambient = new THREE.AmbientLight(0x424141);
|
||||
scene.add(ambient);
|
||||
|
||||
const vhdim = new THREE.Vector3(DIM, DIM, DIM);
|
||||
bbox = new THREE.Box3(new THREE.Vector3(0, 0, 0), vhdim);
|
||||
const helper = new THREE.Box3Helper(bbox, 0xfcdf00);
|
||||
scene.add(helper);
|
||||
|
||||
guitools();
|
||||
animate();
|
||||
}
|
||||
|
||||
init();
|
46
src/interface.js
Normal file
46
src/interface.js
Normal file
@ -0,0 +1,46 @@
|
||||
export function mkslider(title, min, max, step, val, callback) {
|
||||
const gui = document.createElement('div');
|
||||
gui.classList.add('slider');
|
||||
const label = document.createElement('label');
|
||||
const input = document.createElement('input');
|
||||
const value = document.createElement('span');
|
||||
input.setAttribute('type', 'range');
|
||||
input.setAttribute('min', min);
|
||||
input.setAttribute('max', max);
|
||||
input.setAttribute('step', step);
|
||||
input.setAttribute('value', val);
|
||||
label.innerText = title;
|
||||
value.innerText = val;
|
||||
gui.appendChild(label);
|
||||
gui.appendChild(input);
|
||||
gui.appendChild(value);
|
||||
input.addEventListener('input', function() {
|
||||
callback(parseFloat(input.value));
|
||||
value.innerText = input.value;
|
||||
})
|
||||
return gui;
|
||||
}
|
||||
|
||||
export function mkcheckbox(title, val, callback) {
|
||||
const gui = document.createElement('div');
|
||||
gui.classList.add('checkbox');
|
||||
const label = document.createElement('label');
|
||||
const input = document.createElement('input');
|
||||
input.setAttribute('type', 'checkbox');
|
||||
if (val) {
|
||||
input.setAttribute('checked', 'checked');
|
||||
}
|
||||
label.innerText = title;
|
||||
gui.appendChild(label);
|
||||
gui.appendChild(input);
|
||||
input.addEventListener('input', function() {
|
||||
callback(input.checked);
|
||||
});
|
||||
return gui;
|
||||
}
|
||||
|
||||
export function mkspacer() {
|
||||
const gui = document.createElement('div');
|
||||
gui.classList.add('spacer');
|
||||
return gui;
|
||||
}
|
547
src/table.js
Normal file
547
src/table.js
Normal file
@ -0,0 +1,547 @@
|
||||
export const edges = [
|
||||
0x0,
|
||||
0x109,
|
||||
0x203,
|
||||
0x30a,
|
||||
0x406,
|
||||
0x50f,
|
||||
0x605,
|
||||
0x70c,
|
||||
0x80c,
|
||||
0x905,
|
||||
0xa0f,
|
||||
0xb06,
|
||||
0xc0a,
|
||||
0xd03,
|
||||
0xe09,
|
||||
0xf00,
|
||||
0x190,
|
||||
0x99,
|
||||
0x393,
|
||||
0x29a,
|
||||
0x596,
|
||||
0x49f,
|
||||
0x795,
|
||||
0x69c,
|
||||
0x99c,
|
||||
0x895,
|
||||
0xb9f,
|
||||
0xa96,
|
||||
0xd9a,
|
||||
0xc93,
|
||||
0xf99,
|
||||
0xe90,
|
||||
0x230,
|
||||
0x339,
|
||||
0x33,
|
||||
0x13a,
|
||||
0x636,
|
||||
0x73f,
|
||||
0x435,
|
||||
0x53c,
|
||||
0xa3c,
|
||||
0xb35,
|
||||
0x83f,
|
||||
0x936,
|
||||
0xe3a,
|
||||
0xf33,
|
||||
0xc39,
|
||||
0xd30,
|
||||
0x3a0,
|
||||
0x2a9,
|
||||
0x1a3,
|
||||
0xaa,
|
||||
0x7a6,
|
||||
0x6af,
|
||||
0x5a5,
|
||||
0x4ac,
|
||||
0xbac,
|
||||
0xaa5,
|
||||
0x9af,
|
||||
0x8a6,
|
||||
0xfaa,
|
||||
0xea3,
|
||||
0xda9,
|
||||
0xca0,
|
||||
0x460,
|
||||
0x569,
|
||||
0x663,
|
||||
0x76a,
|
||||
0x66,
|
||||
0x16f,
|
||||
0x265,
|
||||
0x36c,
|
||||
0xc6c,
|
||||
0xd65,
|
||||
0xe6f,
|
||||
0xf66,
|
||||
0x86a,
|
||||
0x963,
|
||||
0xa69,
|
||||
0xb60,
|
||||
0x5f0,
|
||||
0x4f9,
|
||||
0x7f3,
|
||||
0x6fa,
|
||||
0x1f6,
|
||||
0xff,
|
||||
0x3f5,
|
||||
0x2fc,
|
||||
0xdfc,
|
||||
0xcf5,
|
||||
0xfff,
|
||||
0xef6,
|
||||
0x9fa,
|
||||
0x8f3,
|
||||
0xbf9,
|
||||
0xaf0,
|
||||
0x650,
|
||||
0x759,
|
||||
0x453,
|
||||
0x55a,
|
||||
0x256,
|
||||
0x35f,
|
||||
0x55,
|
||||
0x15c,
|
||||
0xe5c,
|
||||
0xf55,
|
||||
0xc5f,
|
||||
0xd56,
|
||||
0xa5a,
|
||||
0xb53,
|
||||
0x859,
|
||||
0x950,
|
||||
0x7c0,
|
||||
0x6c9,
|
||||
0x5c3,
|
||||
0x4ca,
|
||||
0x3c6,
|
||||
0x2cf,
|
||||
0x1c5,
|
||||
0xcc,
|
||||
0xfcc,
|
||||
0xec5,
|
||||
0xdcf,
|
||||
0xcc6,
|
||||
0xbca,
|
||||
0xac3,
|
||||
0x9c9,
|
||||
0x8c0,
|
||||
0x8c0,
|
||||
0x9c9,
|
||||
0xac3,
|
||||
0xbca,
|
||||
0xcc6,
|
||||
0xdcf,
|
||||
0xec5,
|
||||
0xfcc,
|
||||
0xcc,
|
||||
0x1c5,
|
||||
0x2cf,
|
||||
0x3c6,
|
||||
0x4ca,
|
||||
0x5c3,
|
||||
0x6c9,
|
||||
0x7c0,
|
||||
0x950,
|
||||
0x859,
|
||||
0xb53,
|
||||
0xa5a,
|
||||
0xd56,
|
||||
0xc5f,
|
||||
0xf55,
|
||||
0xe5c,
|
||||
0x15c,
|
||||
0x55,
|
||||
0x35f,
|
||||
0x256,
|
||||
0x55a,
|
||||
0x453,
|
||||
0x759,
|
||||
0x650,
|
||||
0xaf0,
|
||||
0xbf9,
|
||||
0x8f3,
|
||||
0x9fa,
|
||||
0xef6,
|
||||
0xfff,
|
||||
0xcf5,
|
||||
0xdfc,
|
||||
0x2fc,
|
||||
0x3f5,
|
||||
0xff,
|
||||
0x1f6,
|
||||
0x6fa,
|
||||
0x7f3,
|
||||
0x4f9,
|
||||
0x5f0,
|
||||
0xb60,
|
||||
0xa69,
|
||||
0x963,
|
||||
0x86a,
|
||||
0xf66,
|
||||
0xe6f,
|
||||
0xd65,
|
||||
0xc6c,
|
||||
0x36c,
|
||||
0x265,
|
||||
0x16f,
|
||||
0x66,
|
||||
0x76a,
|
||||
0x663,
|
||||
0x569,
|
||||
0x460,
|
||||
0xca0,
|
||||
0xda9,
|
||||
0xea3,
|
||||
0xfaa,
|
||||
0x8a6,
|
||||
0x9af,
|
||||
0xaa5,
|
||||
0xbac,
|
||||
0x4ac,
|
||||
0x5a5,
|
||||
0x6af,
|
||||
0x7a6,
|
||||
0xaa,
|
||||
0x1a3,
|
||||
0x2a9,
|
||||
0x3a0,
|
||||
0xd30,
|
||||
0xc39,
|
||||
0xf33,
|
||||
0xe3a,
|
||||
0x936,
|
||||
0x83f,
|
||||
0xb35,
|
||||
0xa3c,
|
||||
0x53c,
|
||||
0x435,
|
||||
0x73f,
|
||||
0x636,
|
||||
0x13a,
|
||||
0x33,
|
||||
0x339,
|
||||
0x230,
|
||||
0xe90,
|
||||
0xf99,
|
||||
0xc93,
|
||||
0xd9a,
|
||||
0xa96,
|
||||
0xb9f,
|
||||
0x895,
|
||||
0x99c,
|
||||
0x69c,
|
||||
0x795,
|
||||
0x49f,
|
||||
0x596,
|
||||
0x29a,
|
||||
0x393,
|
||||
0x99,
|
||||
0x190,
|
||||
0xf00,
|
||||
0xe09,
|
||||
0xd03,
|
||||
0xc0a,
|
||||
0xb06,
|
||||
0xa0f,
|
||||
0x905,
|
||||
0x80c,
|
||||
0x70c,
|
||||
0x605,
|
||||
0x50f,
|
||||
0x406,
|
||||
0x30a,
|
||||
0x203,
|
||||
0x109,
|
||||
0x0
|
||||
];
|
||||
|
||||
export const triangulationTable = [
|
||||
[-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[0, 8, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[0, 1, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[1, 8, 3, 9, 8, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[1, 2, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[0, 8, 3, 1, 2, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[9, 2, 10, 0, 2, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[2, 8, 3, 2, 10, 8, 10, 9, 8, -1, -1, -1, -1, -1, -1, -1],
|
||||
[3, 11, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[0, 11, 2, 8, 11, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[1, 9, 0, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[1, 11, 2, 1, 9, 11, 9, 8, 11, -1, -1, -1, -1, -1, -1, -1],
|
||||
[3, 10, 1, 11, 10, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[0, 10, 1, 0, 8, 10, 8, 11, 10, -1, -1, -1, -1, -1, -1, -1],
|
||||
[3, 9, 0, 3, 11, 9, 11, 10, 9, -1, -1, -1, -1, -1, -1, -1],
|
||||
[9, 8, 10, 10, 8, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[4, 7, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[4, 3, 0, 7, 3, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[0, 1, 9, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[4, 1, 9, 4, 7, 1, 7, 3, 1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[1, 2, 10, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[3, 4, 7, 3, 0, 4, 1, 2, 10, -1, -1, -1, -1, -1, -1, -1],
|
||||
[9, 2, 10, 9, 0, 2, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1],
|
||||
[2, 10, 9, 2, 9, 7, 2, 7, 3, 7, 9, 4, -1, -1, -1, -1],
|
||||
[8, 4, 7, 3, 11, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[11, 4, 7, 11, 2, 4, 2, 0, 4, -1, -1, -1, -1, -1, -1, -1],
|
||||
[9, 0, 1, 8, 4, 7, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1],
|
||||
[4, 7, 11, 9, 4, 11, 9, 11, 2, 9, 2, 1, -1, -1, -1, -1],
|
||||
[3, 10, 1, 3, 11, 10, 7, 8, 4, -1, -1, -1, -1, -1, -1, -1],
|
||||
[1, 11, 10, 1, 4, 11, 1, 0, 4, 7, 11, 4, -1, -1, -1, -1],
|
||||
[4, 7, 8, 9, 0, 11, 9, 11, 10, 11, 0, 3, -1, -1, -1, -1],
|
||||
[4, 7, 11, 4, 11, 9, 9, 11, 10, -1, -1, -1, -1, -1, -1, -1],
|
||||
[9, 5, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[9, 5, 4, 0, 8, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[0, 5, 4, 1, 5, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[8, 5, 4, 8, 3, 5, 3, 1, 5, -1, -1, -1, -1, -1, -1, -1],
|
||||
[1, 2, 10, 9, 5, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[3, 0, 8, 1, 2, 10, 4, 9, 5, -1, -1, -1, -1, -1, -1, -1],
|
||||
[5, 2, 10, 5, 4, 2, 4, 0, 2, -1, -1, -1, -1, -1, -1, -1],
|
||||
[2, 10, 5, 3, 2, 5, 3, 5, 4, 3, 4, 8, -1, -1, -1, -1],
|
||||
[9, 5, 4, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[0, 11, 2, 0, 8, 11, 4, 9, 5, -1, -1, -1, -1, -1, -1, -1],
|
||||
[0, 5, 4, 0, 1, 5, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1],
|
||||
[2, 1, 5, 2, 5, 8, 2, 8, 11, 4, 8, 5, -1, -1, -1, -1],
|
||||
[10, 3, 11, 10, 1, 3, 9, 5, 4, -1, -1, -1, -1, -1, -1, -1],
|
||||
[4, 9, 5, 0, 8, 1, 8, 10, 1, 8, 11, 10, -1, -1, -1, -1],
|
||||
[5, 4, 0, 5, 0, 11, 5, 11, 10, 11, 0, 3, -1, -1, -1, -1],
|
||||
[5, 4, 8, 5, 8, 10, 10, 8, 11, -1, -1, -1, -1, -1, -1, -1],
|
||||
[9, 7, 8, 5, 7, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[9, 3, 0, 9, 5, 3, 5, 7, 3, -1, -1, -1, -1, -1, -1, -1],
|
||||
[0, 7, 8, 0, 1, 7, 1, 5, 7, -1, -1, -1, -1, -1, -1, -1],
|
||||
[1, 5, 3, 3, 5, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[9, 7, 8, 9, 5, 7, 10, 1, 2, -1, -1, -1, -1, -1, -1, -1],
|
||||
[10, 1, 2, 9, 5, 0, 5, 3, 0, 5, 7, 3, -1, -1, -1, -1],
|
||||
[8, 0, 2, 8, 2, 5, 8, 5, 7, 10, 5, 2, -1, -1, -1, -1],
|
||||
[2, 10, 5, 2, 5, 3, 3, 5, 7, -1, -1, -1, -1, -1, -1, -1],
|
||||
[7, 9, 5, 7, 8, 9, 3, 11, 2, -1, -1, -1, -1, -1, -1, -1],
|
||||
[9, 5, 7, 9, 7, 2, 9, 2, 0, 2, 7, 11, -1, -1, -1, -1],
|
||||
[2, 3, 11, 0, 1, 8, 1, 7, 8, 1, 5, 7, -1, -1, -1, -1],
|
||||
[11, 2, 1, 11, 1, 7, 7, 1, 5, -1, -1, -1, -1, -1, -1, -1],
|
||||
[9, 5, 8, 8, 5, 7, 10, 1, 3, 10, 3, 11, -1, -1, -1, -1],
|
||||
[5, 7, 0, 5, 0, 9, 7, 11, 0, 1, 0, 10, 11, 10, 0, -1],
|
||||
[11, 10, 0, 11, 0, 3, 10, 5, 0, 8, 0, 7, 5, 7, 0, -1],
|
||||
[11, 10, 5, 7, 11, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[10, 6, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[0, 8, 3, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[9, 0, 1, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[1, 8, 3, 1, 9, 8, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1],
|
||||
[1, 6, 5, 2, 6, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[1, 6, 5, 1, 2, 6, 3, 0, 8, -1, -1, -1, -1, -1, -1, -1],
|
||||
[9, 6, 5, 9, 0, 6, 0, 2, 6, -1, -1, -1, -1, -1, -1, -1],
|
||||
[5, 9, 8, 5, 8, 2, 5, 2, 6, 3, 2, 8, -1, -1, -1, -1],
|
||||
[2, 3, 11, 10, 6, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[11, 0, 8, 11, 2, 0, 10, 6, 5, -1, -1, -1, -1, -1, -1, -1],
|
||||
[0, 1, 9, 2, 3, 11, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1],
|
||||
[5, 10, 6, 1, 9, 2, 9, 11, 2, 9, 8, 11, -1, -1, -1, -1],
|
||||
[6, 3, 11, 6, 5, 3, 5, 1, 3, -1, -1, -1, -1, -1, -1, -1],
|
||||
[0, 8, 11, 0, 11, 5, 0, 5, 1, 5, 11, 6, -1, -1, -1, -1],
|
||||
[3, 11, 6, 0, 3, 6, 0, 6, 5, 0, 5, 9, -1, -1, -1, -1],
|
||||
[6, 5, 9, 6, 9, 11, 11, 9, 8, -1, -1, -1, -1, -1, -1, -1],
|
||||
[5, 10, 6, 4, 7, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[4, 3, 0, 4, 7, 3, 6, 5, 10, -1, -1, -1, -1, -1, -1, -1],
|
||||
[1, 9, 0, 5, 10, 6, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1],
|
||||
[10, 6, 5, 1, 9, 7, 1, 7, 3, 7, 9, 4, -1, -1, -1, -1],
|
||||
[6, 1, 2, 6, 5, 1, 4, 7, 8, -1, -1, -1, -1, -1, -1, -1],
|
||||
[1, 2, 5, 5, 2, 6, 3, 0, 4, 3, 4, 7, -1, -1, -1, -1],
|
||||
[8, 4, 7, 9, 0, 5, 0, 6, 5, 0, 2, 6, -1, -1, -1, -1],
|
||||
[7, 3, 9, 7, 9, 4, 3, 2, 9, 5, 9, 6, 2, 6, 9, -1],
|
||||
[3, 11, 2, 7, 8, 4, 10, 6, 5, -1, -1, -1, -1, -1, -1, -1],
|
||||
[5, 10, 6, 4, 7, 2, 4, 2, 0, 2, 7, 11, -1, -1, -1, -1],
|
||||
[0, 1, 9, 4, 7, 8, 2, 3, 11, 5, 10, 6, -1, -1, -1, -1],
|
||||
[9, 2, 1, 9, 11, 2, 9, 4, 11, 7, 11, 4, 5, 10, 6, -1],
|
||||
[8, 4, 7, 3, 11, 5, 3, 5, 1, 5, 11, 6, -1, -1, -1, -1],
|
||||
[5, 1, 11, 5, 11, 6, 1, 0, 11, 7, 11, 4, 0, 4, 11, -1],
|
||||
[0, 5, 9, 0, 6, 5, 0, 3, 6, 11, 6, 3, 8, 4, 7, -1],
|
||||
[6, 5, 9, 6, 9, 11, 4, 7, 9, 7, 11, 9, -1, -1, -1, -1],
|
||||
[10, 4, 9, 6, 4, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[4, 10, 6, 4, 9, 10, 0, 8, 3, -1, -1, -1, -1, -1, -1, -1],
|
||||
[10, 0, 1, 10, 6, 0, 6, 4, 0, -1, -1, -1, -1, -1, -1, -1],
|
||||
[8, 3, 1, 8, 1, 6, 8, 6, 4, 6, 1, 10, -1, -1, -1, -1],
|
||||
[1, 4, 9, 1, 2, 4, 2, 6, 4, -1, -1, -1, -1, -1, -1, -1],
|
||||
[3, 0, 8, 1, 2, 9, 2, 4, 9, 2, 6, 4, -1, -1, -1, -1],
|
||||
[0, 2, 4, 4, 2, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[8, 3, 2, 8, 2, 4, 4, 2, 6, -1, -1, -1, -1, -1, -1, -1],
|
||||
[10, 4, 9, 10, 6, 4, 11, 2, 3, -1, -1, -1, -1, -1, -1, -1],
|
||||
[0, 8, 2, 2, 8, 11, 4, 9, 10, 4, 10, 6, -1, -1, -1, -1],
|
||||
[3, 11, 2, 0, 1, 6, 0, 6, 4, 6, 1, 10, -1, -1, -1, -1],
|
||||
[6, 4, 1, 6, 1, 10, 4, 8, 1, 2, 1, 11, 8, 11, 1, -1],
|
||||
[9, 6, 4, 9, 3, 6, 9, 1, 3, 11, 6, 3, -1, -1, -1, -1],
|
||||
[8, 11, 1, 8, 1, 0, 11, 6, 1, 9, 1, 4, 6, 4, 1, -1],
|
||||
[3, 11, 6, 3, 6, 0, 0, 6, 4, -1, -1, -1, -1, -1, -1, -1],
|
||||
[6, 4, 8, 11, 6, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[7, 10, 6, 7, 8, 10, 8, 9, 10, -1, -1, -1, -1, -1, -1, -1],
|
||||
[0, 7, 3, 0, 10, 7, 0, 9, 10, 6, 7, 10, -1, -1, -1, -1],
|
||||
[10, 6, 7, 1, 10, 7, 1, 7, 8, 1, 8, 0, -1, -1, -1, -1],
|
||||
[10, 6, 7, 10, 7, 1, 1, 7, 3, -1, -1, -1, -1, -1, -1, -1],
|
||||
[1, 2, 6, 1, 6, 8, 1, 8, 9, 8, 6, 7, -1, -1, -1, -1],
|
||||
[2, 6, 9, 2, 9, 1, 6, 7, 9, 0, 9, 3, 7, 3, 9, -1],
|
||||
[7, 8, 0, 7, 0, 6, 6, 0, 2, -1, -1, -1, -1, -1, -1, -1],
|
||||
[7, 3, 2, 6, 7, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[2, 3, 11, 10, 6, 8, 10, 8, 9, 8, 6, 7, -1, -1, -1, -1],
|
||||
[2, 0, 7, 2, 7, 11, 0, 9, 7, 6, 7, 10, 9, 10, 7, -1],
|
||||
[1, 8, 0, 1, 7, 8, 1, 10, 7, 6, 7, 10, 2, 3, 11, -1],
|
||||
[11, 2, 1, 11, 1, 7, 10, 6, 1, 6, 7, 1, -1, -1, -1, -1],
|
||||
[8, 9, 6, 8, 6, 7, 9, 1, 6, 11, 6, 3, 1, 3, 6, -1],
|
||||
[0, 9, 1, 11, 6, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[7, 8, 0, 7, 0, 6, 3, 11, 0, 11, 6, 0, -1, -1, -1, -1],
|
||||
[7, 11, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[7, 6, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[3, 0, 8, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[0, 1, 9, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[8, 1, 9, 8, 3, 1, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1],
|
||||
[10, 1, 2, 6, 11, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[1, 2, 10, 3, 0, 8, 6, 11, 7, -1, -1, -1, -1, -1, -1, -1],
|
||||
[2, 9, 0, 2, 10, 9, 6, 11, 7, -1, -1, -1, -1, -1, -1, -1],
|
||||
[6, 11, 7, 2, 10, 3, 10, 8, 3, 10, 9, 8, -1, -1, -1, -1],
|
||||
[7, 2, 3, 6, 2, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[7, 0, 8, 7, 6, 0, 6, 2, 0, -1, -1, -1, -1, -1, -1, -1],
|
||||
[2, 7, 6, 2, 3, 7, 0, 1, 9, -1, -1, -1, -1, -1, -1, -1],
|
||||
[1, 6, 2, 1, 8, 6, 1, 9, 8, 8, 7, 6, -1, -1, -1, -1],
|
||||
[10, 7, 6, 10, 1, 7, 1, 3, 7, -1, -1, -1, -1, -1, -1, -1],
|
||||
[10, 7, 6, 1, 7, 10, 1, 8, 7, 1, 0, 8, -1, -1, -1, -1],
|
||||
[0, 3, 7, 0, 7, 10, 0, 10, 9, 6, 10, 7, -1, -1, -1, -1],
|
||||
[7, 6, 10, 7, 10, 8, 8, 10, 9, -1, -1, -1, -1, -1, -1, -1],
|
||||
[6, 8, 4, 11, 8, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[3, 6, 11, 3, 0, 6, 0, 4, 6, -1, -1, -1, -1, -1, -1, -1],
|
||||
[8, 6, 11, 8, 4, 6, 9, 0, 1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[9, 4, 6, 9, 6, 3, 9, 3, 1, 11, 3, 6, -1, -1, -1, -1],
|
||||
[6, 8, 4, 6, 11, 8, 2, 10, 1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[1, 2, 10, 3, 0, 11, 0, 6, 11, 0, 4, 6, -1, -1, -1, -1],
|
||||
[4, 11, 8, 4, 6, 11, 0, 2, 9, 2, 10, 9, -1, -1, -1, -1],
|
||||
[10, 9, 3, 10, 3, 2, 9, 4, 3, 11, 3, 6, 4, 6, 3, -1],
|
||||
[8, 2, 3, 8, 4, 2, 4, 6, 2, -1, -1, -1, -1, -1, -1, -1],
|
||||
[0, 4, 2, 4, 6, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[1, 9, 0, 2, 3, 4, 2, 4, 6, 4, 3, 8, -1, -1, -1, -1],
|
||||
[1, 9, 4, 1, 4, 2, 2, 4, 6, -1, -1, -1, -1, -1, -1, -1],
|
||||
[8, 1, 3, 8, 6, 1, 8, 4, 6, 6, 10, 1, -1, -1, -1, -1],
|
||||
[10, 1, 0, 10, 0, 6, 6, 0, 4, -1, -1, -1, -1, -1, -1, -1],
|
||||
[4, 6, 3, 4, 3, 8, 6, 10, 3, 0, 3, 9, 10, 9, 3, -1],
|
||||
[10, 9, 4, 6, 10, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[4, 9, 5, 7, 6, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[0, 8, 3, 4, 9, 5, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1],
|
||||
[5, 0, 1, 5, 4, 0, 7, 6, 11, -1, -1, -1, -1, -1, -1, -1],
|
||||
[11, 7, 6, 8, 3, 4, 3, 5, 4, 3, 1, 5, -1, -1, -1, -1],
|
||||
[9, 5, 4, 10, 1, 2, 7, 6, 11, -1, -1, -1, -1, -1, -1, -1],
|
||||
[6, 11, 7, 1, 2, 10, 0, 8, 3, 4, 9, 5, -1, -1, -1, -1],
|
||||
[7, 6, 11, 5, 4, 10, 4, 2, 10, 4, 0, 2, -1, -1, -1, -1],
|
||||
[3, 4, 8, 3, 5, 4, 3, 2, 5, 10, 5, 2, 11, 7, 6, -1],
|
||||
[7, 2, 3, 7, 6, 2, 5, 4, 9, -1, -1, -1, -1, -1, -1, -1],
|
||||
[9, 5, 4, 0, 8, 6, 0, 6, 2, 6, 8, 7, -1, -1, -1, -1],
|
||||
[3, 6, 2, 3, 7, 6, 1, 5, 0, 5, 4, 0, -1, -1, -1, -1],
|
||||
[6, 2, 8, 6, 8, 7, 2, 1, 8, 4, 8, 5, 1, 5, 8, -1],
|
||||
[9, 5, 4, 10, 1, 6, 1, 7, 6, 1, 3, 7, -1, -1, -1, -1],
|
||||
[1, 6, 10, 1, 7, 6, 1, 0, 7, 8, 7, 0, 9, 5, 4, -1],
|
||||
[4, 0, 10, 4, 10, 5, 0, 3, 10, 6, 10, 7, 3, 7, 10, -1],
|
||||
[7, 6, 10, 7, 10, 8, 5, 4, 10, 4, 8, 10, -1, -1, -1, -1],
|
||||
[6, 9, 5, 6, 11, 9, 11, 8, 9, -1, -1, -1, -1, -1, -1, -1],
|
||||
[3, 6, 11, 0, 6, 3, 0, 5, 6, 0, 9, 5, -1, -1, -1, -1],
|
||||
[0, 11, 8, 0, 5, 11, 0, 1, 5, 5, 6, 11, -1, -1, -1, -1],
|
||||
[6, 11, 3, 6, 3, 5, 5, 3, 1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[1, 2, 10, 9, 5, 11, 9, 11, 8, 11, 5, 6, -1, -1, -1, -1],
|
||||
[0, 11, 3, 0, 6, 11, 0, 9, 6, 5, 6, 9, 1, 2, 10, -1],
|
||||
[11, 8, 5, 11, 5, 6, 8, 0, 5, 10, 5, 2, 0, 2, 5, -1],
|
||||
[6, 11, 3, 6, 3, 5, 2, 10, 3, 10, 5, 3, -1, -1, -1, -1],
|
||||
[5, 8, 9, 5, 2, 8, 5, 6, 2, 3, 8, 2, -1, -1, -1, -1],
|
||||
[9, 5, 6, 9, 6, 0, 0, 6, 2, -1, -1, -1, -1, -1, -1, -1],
|
||||
[1, 5, 8, 1, 8, 0, 5, 6, 8, 3, 8, 2, 6, 2, 8, -1],
|
||||
[1, 5, 6, 2, 1, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[1, 3, 6, 1, 6, 10, 3, 8, 6, 5, 6, 9, 8, 9, 6, -1],
|
||||
[10, 1, 0, 10, 0, 6, 9, 5, 0, 5, 6, 0, -1, -1, -1, -1],
|
||||
[0, 3, 8, 5, 6, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[10, 5, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[11, 5, 10, 7, 5, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[11, 5, 10, 11, 7, 5, 8, 3, 0, -1, -1, -1, -1, -1, -1, -1],
|
||||
[5, 11, 7, 5, 10, 11, 1, 9, 0, -1, -1, -1, -1, -1, -1, -1],
|
||||
[10, 7, 5, 10, 11, 7, 9, 8, 1, 8, 3, 1, -1, -1, -1, -1],
|
||||
[11, 1, 2, 11, 7, 1, 7, 5, 1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[0, 8, 3, 1, 2, 7, 1, 7, 5, 7, 2, 11, -1, -1, -1, -1],
|
||||
[9, 7, 5, 9, 2, 7, 9, 0, 2, 2, 11, 7, -1, -1, -1, -1],
|
||||
[7, 5, 2, 7, 2, 11, 5, 9, 2, 3, 2, 8, 9, 8, 2, -1],
|
||||
[2, 5, 10, 2, 3, 5, 3, 7, 5, -1, -1, -1, -1, -1, -1, -1],
|
||||
[8, 2, 0, 8, 5, 2, 8, 7, 5, 10, 2, 5, -1, -1, -1, -1],
|
||||
[9, 0, 1, 5, 10, 3, 5, 3, 7, 3, 10, 2, -1, -1, -1, -1],
|
||||
[9, 8, 2, 9, 2, 1, 8, 7, 2, 10, 2, 5, 7, 5, 2, -1],
|
||||
[1, 3, 5, 3, 7, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[0, 8, 7, 0, 7, 1, 1, 7, 5, -1, -1, -1, -1, -1, -1, -1],
|
||||
[9, 0, 3, 9, 3, 5, 5, 3, 7, -1, -1, -1, -1, -1, -1, -1],
|
||||
[9, 8, 7, 5, 9, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[5, 8, 4, 5, 10, 8, 10, 11, 8, -1, -1, -1, -1, -1, -1, -1],
|
||||
[5, 0, 4, 5, 11, 0, 5, 10, 11, 11, 3, 0, -1, -1, -1, -1],
|
||||
[0, 1, 9, 8, 4, 10, 8, 10, 11, 10, 4, 5, -1, -1, -1, -1],
|
||||
[10, 11, 4, 10, 4, 5, 11, 3, 4, 9, 4, 1, 3, 1, 4, -1],
|
||||
[2, 5, 1, 2, 8, 5, 2, 11, 8, 4, 5, 8, -1, -1, -1, -1],
|
||||
[0, 4, 11, 0, 11, 3, 4, 5, 11, 2, 11, 1, 5, 1, 11, -1],
|
||||
[0, 2, 5, 0, 5, 9, 2, 11, 5, 4, 5, 8, 11, 8, 5, -1],
|
||||
[9, 4, 5, 2, 11, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[2, 5, 10, 3, 5, 2, 3, 4, 5, 3, 8, 4, -1, -1, -1, -1],
|
||||
[5, 10, 2, 5, 2, 4, 4, 2, 0, -1, -1, -1, -1, -1, -1, -1],
|
||||
[3, 10, 2, 3, 5, 10, 3, 8, 5, 4, 5, 8, 0, 1, 9, -1],
|
||||
[5, 10, 2, 5, 2, 4, 1, 9, 2, 9, 4, 2, -1, -1, -1, -1],
|
||||
[8, 4, 5, 8, 5, 3, 3, 5, 1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[0, 4, 5, 1, 0, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[8, 4, 5, 8, 5, 3, 9, 0, 5, 0, 3, 5, -1, -1, -1, -1],
|
||||
[9, 4, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[4, 11, 7, 4, 9, 11, 9, 10, 11, -1, -1, -1, -1, -1, -1, -1],
|
||||
[0, 8, 3, 4, 9, 7, 9, 11, 7, 9, 10, 11, -1, -1, -1, -1],
|
||||
[1, 10, 11, 1, 11, 4, 1, 4, 0, 7, 4, 11, -1, -1, -1, -1],
|
||||
[3, 1, 4, 3, 4, 8, 1, 10, 4, 7, 4, 11, 10, 11, 4, -1],
|
||||
[4, 11, 7, 9, 11, 4, 9, 2, 11, 9, 1, 2, -1, -1, -1, -1],
|
||||
[9, 7, 4, 9, 11, 7, 9, 1, 11, 2, 11, 1, 0, 8, 3, -1],
|
||||
[11, 7, 4, 11, 4, 2, 2, 4, 0, -1, -1, -1, -1, -1, -1, -1],
|
||||
[11, 7, 4, 11, 4, 2, 8, 3, 4, 3, 2, 4, -1, -1, -1, -1],
|
||||
[2, 9, 10, 2, 7, 9, 2, 3, 7, 7, 4, 9, -1, -1, -1, -1],
|
||||
[9, 10, 7, 9, 7, 4, 10, 2, 7, 8, 7, 0, 2, 0, 7, -1],
|
||||
[3, 7, 10, 3, 10, 2, 7, 4, 10, 1, 10, 0, 4, 0, 10, -1],
|
||||
[1, 10, 2, 8, 7, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[4, 9, 1, 4, 1, 7, 7, 1, 3, -1, -1, -1, -1, -1, -1, -1],
|
||||
[4, 9, 1, 4, 1, 7, 0, 8, 1, 8, 7, 1, -1, -1, -1, -1],
|
||||
[4, 0, 3, 7, 4, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[4, 8, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[9, 10, 8, 10, 11, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[3, 0, 9, 3, 9, 11, 11, 9, 10, -1, -1, -1, -1, -1, -1, -1],
|
||||
[0, 1, 10, 0, 10, 8, 8, 10, 11, -1, -1, -1, -1, -1, -1, -1],
|
||||
[3, 1, 10, 11, 3, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[1, 2, 11, 1, 11, 9, 9, 11, 8, -1, -1, -1, -1, -1, -1, -1],
|
||||
[3, 0, 9, 3, 9, 11, 1, 2, 9, 2, 11, 9, -1, -1, -1, -1],
|
||||
[0, 2, 11, 8, 0, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[3, 2, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[2, 3, 8, 2, 8, 10, 10, 8, 9, -1, -1, -1, -1, -1, -1, -1],
|
||||
[9, 10, 2, 0, 9, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[2, 3, 8, 2, 8, 10, 0, 1, 8, 1, 10, 8, -1, -1, -1, -1],
|
||||
[1, 10, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[1, 3, 8, 9, 1, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[0, 9, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[0, 3, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
[-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
|
||||
];
|
||||
|
||||
export const cornerIndexAFromEdge = [
|
||||
0,
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
4,
|
||||
5,
|
||||
6,
|
||||
7,
|
||||
0,
|
||||
1,
|
||||
2,
|
||||
3
|
||||
];
|
||||
|
||||
export const cornerIndexBFromEdge = [
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
0,
|
||||
5,
|
||||
6,
|
||||
7,
|
||||
4,
|
||||
4,
|
||||
5,
|
||||
6,
|
||||
7
|
||||
];
|
28
webpack.config.js
Normal file
28
webpack.config.js
Normal file
@ -0,0 +1,28 @@
|
||||
const path = require('path')
|
||||
const HtmlWebpackPlugin = require('html-webpack-plugin')
|
||||
|
||||
module.exports = {
|
||||
entry: './src/index.js',
|
||||
output: {
|
||||
path: path.resolve(__dirname, 'dist'),
|
||||
filename: 'app.js'
|
||||
},
|
||||
module: {
|
||||
rules: [
|
||||
{
|
||||
test: /\.js$/,
|
||||
exclude: /(node_modules)/,
|
||||
use: {
|
||||
loader: 'babel-loader',
|
||||
options: {
|
||||
presets: ['@babel/preset-env']
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
devtool: 'inline-source-map',
|
||||
plugins: [
|
||||
new HtmlWebpackPlugin({ template: 'index.html' })
|
||||
]
|
||||
}
|
Loading…
Reference in New Issue
Block a user