@@ -97,17 +97,29 @@ function vtkGlyph3DMapper(publicAPI, model) {
97
97
}
98
98
if ( sArray && model . scaleMode !== ScaleModes . SCALE_BY_CONSTANT ) {
99
99
const numC = sArray . getNumberOfComponents ( ) ;
100
- let maxScale = 0.0 ;
101
- for ( let i = 0 ; i < numC ; ++ i ) {
102
- const srange = sArray . getRange ( i ) ;
103
- if ( - srange [ 0 ] > maxScale ) {
104
- maxScale = - srange [ 0 ] ;
100
+ if ( model . scaleMode === ScaleModes . SCALE_BY_COMPONENTS ) {
101
+ let maxScale = 0.0 ;
102
+ for ( let i = 0 ; i < numC ; ++ i ) {
103
+ const srange = sArray . getRange ( i ) ;
104
+ if ( - srange [ 0 ] > maxScale ) {
105
+ maxScale = - srange [ 0 ] ;
106
+ }
107
+ if ( srange [ 1 ] > maxScale ) {
108
+ maxScale = srange [ 1 ] ;
109
+ }
105
110
}
106
- if ( srange [ 1 ] > maxScale ) {
107
- maxScale = srange [ 1 ] ;
111
+ scale *= maxScale ;
112
+ } else {
113
+ const maxScale = [ ] ;
114
+ for ( let i = 0 ; i < numC ; ++ i ) {
115
+ const srange = sArray . getRange ( i ) ;
116
+ maxScale [ i ] = - srange [ 0 ] ;
117
+ if ( srange [ 1 ] > maxScale [ i ] ) {
118
+ maxScale [ i ] = srange [ 1 ] ;
119
+ }
108
120
}
121
+ scale *= vtkMath . norm ( maxScale , numC ) ;
109
122
}
110
- scale *= maxScale ;
111
123
}
112
124
113
125
// if orienting then use the radius
@@ -200,27 +212,27 @@ function vtkGlyph3DMapper(publicAPI, model) {
200
212
201
213
// scale data if appropriate
202
214
if ( model . scaling ) {
203
- scale [ 0 ] = 1.0 ;
204
- scale [ 1 ] = 1.0 ;
205
- scale [ 2 ] = 1.0 ;
215
+ scale [ 0 ] = model . scaleFactor ;
216
+ scale [ 1 ] = model . scaleFactor ;
217
+ scale [ 2 ] = model . scaleFactor ;
206
218
// Get the scalar and vector data
207
219
if ( sArray ) {
208
220
switch ( model . scaleMode ) {
209
221
case ScaleModes . SCALE_BY_MAGNITUDE :
210
222
for ( let t = 0 ; t < numSComp ; ++ t ) {
211
223
tuple [ t ] = sData [ ( i * numSComp ) + t ] ;
212
224
}
213
- scale [ 0 ] = vtkMath . norm ( tuple , numSComp ) ;
225
+ scale [ 0 ] * = vtkMath . norm ( tuple , numSComp ) ;
214
226
scale [ 1 ] = scale [ 0 ] ;
215
227
scale [ 2 ] = scale [ 0 ] ;
216
228
break ;
217
229
case ScaleModes . SCALE_BY_COMPONENTS :
218
230
for ( let t = 0 ; t < numSComp ; ++ t ) {
219
231
tuple [ t ] = sData [ ( i * numSComp ) + t ] ;
220
232
}
221
- scale [ 0 ] = tuple [ 0 ] ;
222
- scale [ 1 ] = tuple [ 1 ] ;
223
- scale [ 2 ] = tuple [ 2 ] ;
233
+ scale [ 0 ] * = tuple [ 0 ] ;
234
+ scale [ 1 ] * = tuple [ 1 ] ;
235
+ scale [ 2 ] * = tuple [ 2 ] ;
224
236
break ;
225
237
case ScaleModes . SCALE_BY_CONSTANT :
226
238
default :
0 commit comments