11
11
var Lib = require ( '../../lib' ) ;
12
12
var colorscaleCalc = require ( '../../components/colorscale/calc' ) ;
13
13
14
- module . exports = function calc ( gd , trace ) {
15
- var i , j , k ;
16
-
17
- var u = trace . u ;
18
- var v = trace . v ;
19
- var w = trace . w ;
20
- var x = trace . x ;
21
- var y = trace . y ;
22
- var z = trace . z ;
23
- var len = Math . min ( x . length , y . length , z . length , u . length , v . length , w . length ) ;
14
+ function calc ( gd , trace ) {
15
+ trace . _len = Math . min (
16
+ trace . x . length ,
17
+ trace . y . length ,
18
+ trace . z . length ,
19
+ trace . u . length ,
20
+ trace . v . length ,
21
+ trace . w . length
22
+ ) ;
23
+
24
+ var grid = processGrid ( trace ) ;
25
+ trace . _gridFill = grid . fill ;
26
+ trace . _Xs = grid . Xs ;
27
+ trace . _Ys = grid . Ys ;
28
+ trace . _Zs = grid . Zs ;
29
+ trace . _len = grid . len ;
24
30
25
31
var slen = 0 ;
26
32
var startx , starty , startz ;
@@ -36,12 +42,12 @@ module.exports = function calc(gd, trace) {
36
42
37
43
var normMax = 0 ;
38
44
var normMin = Infinity ;
39
-
40
- for ( i = 0 ; i < len ; i ++ ) {
41
- var uu = u [ i ] ;
42
- var vv = v [ i ] ;
43
- var ww = w [ i ] ;
44
- var norm = Math . sqrt ( uu * uu + vv * vv + ww * ww ) ;
45
+ var i ;
46
+ for ( i = 0 ; i < trace . _len ; i ++ ) {
47
+ var u = trace . u [ i ] ;
48
+ var v = trace . v [ i ] ;
49
+ var w = trace . w [ i ] ;
50
+ var norm = Math . sqrt ( u * u + v * v + w * w ) ;
45
51
46
52
normMax = Math . max ( normMax , norm ) ;
47
53
normMin = Math . min ( normMin , norm ) ;
@@ -53,6 +59,35 @@ module.exports = function calc(gd, trace) {
53
59
cLetter : 'c'
54
60
} ) ;
55
61
62
+ for ( i = 0 ; i < slen ; i ++ ) {
63
+ var sx = startx [ i ] ;
64
+ grid . xMax = Math . max ( grid . xMax , sx ) ;
65
+ grid . xMin = Math . min ( grid . xMin , sx ) ;
66
+
67
+ var sy = starty [ i ] ;
68
+ grid . yMax = Math . max ( grid . yMax , sy ) ;
69
+ grid . yMin = Math . min ( grid . yMin , sy ) ;
70
+
71
+ var sz = startz [ i ] ;
72
+ grid . zMax = Math . max ( grid . zMax , sz ) ;
73
+ grid . zMin = Math . min ( grid . zMin , sz ) ;
74
+ }
75
+
76
+ trace . _slen = slen ;
77
+ trace . _normMax = normMax ;
78
+ trace . _xbnds = [ grid . xMin , grid . xMax ] ;
79
+ trace . _ybnds = [ grid . yMin , grid . yMax ] ;
80
+ trace . _zbnds = [ grid . zMin , grid . zMax ] ;
81
+ }
82
+
83
+ function processGrid ( trace ) {
84
+ var x = trace . x ;
85
+ var y = trace . y ;
86
+ var z = trace . z ;
87
+ var len = trace . _len ;
88
+
89
+ var i , j , k ;
90
+
56
91
var xMax = - Infinity ;
57
92
var xMin = Infinity ;
58
93
var yMax = - Infinity ;
@@ -106,9 +141,9 @@ module.exports = function calc(gd, trace) {
106
141
if ( ! filledY ) gridFill += 'y' ;
107
142
if ( ! filledZ ) gridFill += 'z' ;
108
143
109
- var Xs = distinctVals ( filter ( trace . x , len ) ) ;
110
- var Ys = distinctVals ( filter ( trace . y , len ) ) ;
111
- var Zs = distinctVals ( filter ( trace . z , len ) ) ;
144
+ var Xs = distinctVals ( trace . x , len ) ;
145
+ var Ys = distinctVals ( trace . y , len ) ;
146
+ var Zs = distinctVals ( trace . z , len ) ;
112
147
113
148
gridFill = gridFill . replace ( 'x' , ( firstX > lastX ? '-' : '+' ) + 'x' ) ;
114
149
gridFill = gridFill . replace ( 'y' , ( firstY > lastY ? '-' : '+' ) + 'y' ) ;
@@ -173,41 +208,30 @@ module.exports = function calc(gd, trace) {
173
208
empty ( ) ;
174
209
}
175
210
176
- for ( i = 0 ; i < slen ; i ++ ) {
177
- var sx = startx [ i ] ;
178
- xMax = Math . max ( xMax , sx ) ;
179
- xMin = Math . min ( xMin , sx ) ;
180
-
181
- var sy = starty [ i ] ;
182
- yMax = Math . max ( yMax , sy ) ;
183
- yMin = Math . min ( yMin , sy ) ;
184
-
185
- var sz = startz [ i ] ;
186
- zMax = Math . max ( zMax , sz ) ;
187
- zMin = Math . min ( zMin , sz ) ;
188
- }
189
-
190
- trace . _len = len ;
191
- trace . _slen = slen ;
192
- trace . _normMax = normMax ;
193
- trace . _xbnds = [ xMin , xMax ] ;
194
- trace . _ybnds = [ yMin , yMax ] ;
195
- trace . _zbnds = [ zMin , zMax ] ;
196
- trace . _Xs = Xs ;
197
- trace . _Ys = Ys ;
198
- trace . _Zs = Zs ;
199
- trace . _gridFill = gridFill ;
200
- } ;
211
+ return {
212
+ xMin : xMin ,
213
+ yMin : yMin ,
214
+ zMin : zMin ,
215
+ xMax : xMax ,
216
+ yMax : yMax ,
217
+ zMax : zMax ,
218
+ Xs : Xs ,
219
+ Ys : Ys ,
220
+ Zs : Zs ,
221
+ len : len ,
222
+ fill : gridFill
223
+ } ;
224
+ }
201
225
202
226
function distinctVals ( col ) {
203
- return Lib . distinctVals ( col ) . vals ;
227
+ return Lib . distinctVals ( filter ( col ) ) . vals ;
204
228
}
205
229
206
230
function filter ( arr , len ) {
207
231
if ( len === undefined ) len = arr . length ;
208
232
209
233
// no need for casting typed arrays to numbers
210
- if ( Lib . isTypedArray ( arr ) ) return arr . slice ( 0 , len ) ;
234
+ if ( Lib . isTypedArray ( arr ) ) return arr . subarray ( 0 , len ) ;
211
235
212
236
var values = [ ] ;
213
237
for ( var i = 0 ; i < len ; i ++ ) {
@@ -219,3 +243,8 @@ function filter(arr, len) {
219
243
function lessThan ( a , b ) {
220
244
return + a < + b ;
221
245
}
246
+
247
+ module . exports = {
248
+ calc : calc ,
249
+ processGrid : processGrid
250
+ } ;
0 commit comments