@@ -96,21 +96,30 @@ module.exports = function calc(gd, trace) {
9696 if ( ! filledY ) gridFill += 'y' ;
9797 if ( ! filledZ ) gridFill += 'z' ;
9898
99- var valsx = distinctVals ( trace . x . slice ( 0 , len ) ) ;
100- var valsy = distinctVals ( trace . y . slice ( 0 , len ) ) ;
101- var valsz = distinctVals ( trace . z . slice ( 0 , len ) ) ;
99+ var Xs = distinctVals ( trace . x . slice ( 0 , len ) ) ;
100+ var Ys = distinctVals ( trace . y . slice ( 0 , len ) ) ;
101+ var Zs = distinctVals ( trace . z . slice ( 0 , len ) ) ;
102+
103+ var empty = function ( ) {
104+ len = 0 ;
105+ Xs = [ ] ;
106+ Ys = [ ] ;
107+ Zs = [ ] ;
108+ } ;
109+
110+ // Over-specified mesh case, this would error in tube2mesh
111+ if ( ! len || len < Xs . length * Ys . length * Zs . length ) empty ( ) ;
102112
103113 var getArray = function ( c ) { return c === 'x' ? x : c === 'y' ? y : z ; } ;
104- var getVals = function ( c ) { return c === 'x' ? valsx : c === 'y' ? valsy : valsz ; } ;
105- var getLength = function ( c ) { return getVals ( c ) . length ; } ;
106- var getDir = function ( c ) { return ( + ( c [ c . length - 1 ] - c [ 0 ] ) ) * 2 + 1 ; } ;
114+ var getVals = function ( c ) { return c === 'x' ? Xs : c === 'y' ? Ys : Zs ; } ;
115+ var getDir = function ( c ) { return ( + ( c [ len - 1 ] - c [ 0 ] ) ) * 2 + 1 ; } ;
107116
108117 var arrK = getArray ( gridFill [ 0 ] ) ;
109118 var arrJ = getArray ( gridFill [ 1 ] ) ;
110119 var arrI = getArray ( gridFill [ 2 ] ) ;
111- var nk = getLength ( gridFill [ 0 ] ) ;
112- var nj = getLength ( gridFill [ 1 ] ) ;
113- var ni = getLength ( gridFill [ 2 ] ) ;
120+ var nk = getVals ( gridFill [ 0 ] ) . length ;
121+ var nj = getVals ( gridFill [ 1 ] ) . length ;
122+ var ni = getVals ( gridFill [ 2 ] ) . length ;
114123
115124 var arbitrary = false ;
116125
@@ -147,7 +156,7 @@ module.exports = function calc(gd, trace) {
147156
148157 if ( arbitrary ) {
149158 Lib . warn ( 'Encountered arbitrary coordinates! Unable to input data grid.' ) ;
150- len = 0 ;
159+ empty ( ) ;
151160 }
152161
153162 for ( i = 0 ; i < slen ; i ++ ) {
@@ -170,9 +179,9 @@ module.exports = function calc(gd, trace) {
170179 trace . _xbnds = [ xMin , xMax ] ;
171180 trace . _ybnds = [ yMin , yMax ] ;
172181 trace . _zbnds = [ zMin , zMax ] ;
173- trace . _valsx = valsx ;
174- trace . _valsy = valsy ;
175- trace . _valsz = valsz ;
182+ trace . _Xs = Xs ;
183+ trace . _Ys = Ys ;
184+ trace . _Zs = Zs ;
176185 trace . _gridFill = gridFill ;
177186} ;
178187
0 commit comments