@@ -96,21 +96,30 @@ module.exports = function calc(gd, trace) {
96
96
if ( ! filledY ) gridFill += 'y' ;
97
97
if ( ! filledZ ) gridFill += 'z' ;
98
98
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 ( ) ;
102
112
103
113
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 ; } ;
107
116
108
117
var arrK = getArray ( gridFill [ 0 ] ) ;
109
118
var arrJ = getArray ( gridFill [ 1 ] ) ;
110
119
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 ;
114
123
115
124
var arbitrary = false ;
116
125
@@ -147,7 +156,7 @@ module.exports = function calc(gd, trace) {
147
156
148
157
if ( arbitrary ) {
149
158
Lib . warn ( 'Encountered arbitrary coordinates! Unable to input data grid.' ) ;
150
- len = 0 ;
159
+ empty ( ) ;
151
160
}
152
161
153
162
for ( i = 0 ; i < slen ; i ++ ) {
@@ -170,9 +179,9 @@ module.exports = function calc(gd, trace) {
170
179
trace . _xbnds = [ xMin , xMax ] ;
171
180
trace . _ybnds = [ yMin , yMax ] ;
172
181
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 ;
176
185
trace . _gridFill = gridFill ;
177
186
} ;
178
187
0 commit comments