"use strict" module.exports = getCubeEdges var bits = require('bit-twiddle') var multiply = require('gl-mat4/multiply') var splitPoly = require('split-polygon') var orient = require('robust-orientation') var mvp = new Array(16) var pCubeVerts = new Array(8) var cubeVerts = new Array(8) var x = new Array(3) var zero3 = [0,0,0] ;(function() { for(var i=0; i<8; ++i) { pCubeVerts[i] =[1,1,1,1] cubeVerts[i] = [1,1,1] } })() function transformHg(result, x, mat) { for(var i=0; i<4; ++i) { result[i] = mat[12+i] for(var j=0; j<3; ++j) { result[i] += x[j]*mat[4*j+i] } } } var FRUSTUM_PLANES = [ [ 0, 0, 1, 0, 0], [ 0, 0,-1, 1, 0], [ 0,-1, 0, 1, 0], [ 0, 1, 0, 1, 0], [-1, 0, 0, 1, 0], [ 1, 0, 0, 1, 0] ] function polygonArea(p) { for(var i=0; i o0) { closest |= 1< o0) { closest |= 1< cubeVerts[i][1]) { bottom = i } } //Find left/right neighbors of bottom vertex var left = -1 for(var i=0; i<3; ++i) { var idx = bottom ^ (1< cubeVerts[right][0]) { right = idx } } //Determine edge axis coordinates var cubeEdges = CUBE_EDGES cubeEdges[0] = cubeEdges[1] = cubeEdges[2] = 0 cubeEdges[bits.log2(left^bottom)] = bottom&left cubeEdges[bits.log2(bottom^right)] = bottom&right var top = right ^ 7 if(top === closest || top === farthest) { top = left ^ 7 cubeEdges[bits.log2(right^top)] = top&right } else { cubeEdges[bits.log2(left^top)] = top&left } //Determine visible faces var axis = CUBE_AXIS var cutCorner = closest for(var d=0; d<3; ++d) { if(cutCorner & (1<