@@ -106,6 +106,33 @@ function vtkIncrementalOctreeNode(publicAPI, model) {
106
106
bounds [ 5 ] = model . maxBounds [ 2 ] ;
107
107
} ;
108
108
109
+ publicAPI . getChildIndex = ( point ) =>
110
+ Number ( point [ 0 ] > model . children [ 0 ] . getMaxBoundsByReference ( ) [ 0 ] ) +
111
+ // eslint-disable-next-line no-bitwise
112
+ ( Number ( point [ 1 ] > model . children [ 0 ] . getMaxBoundsByReference ( ) [ 1 ] ) << 1 ) +
113
+ // eslint-disable-next-line no-bitwise
114
+ ( Number ( point [ 2 ] > model . children [ 0 ] . getMaxBoundsByReference ( ) [ 2 ] ) << 2 ) ;
115
+
116
+ publicAPI . containsPoint = ( pnt ) =>
117
+ model . minBounds [ 0 ] < pnt [ 0 ] &&
118
+ pnt [ 0 ] <= model . maxBounds [ 0 ] &&
119
+ model . minBounds [ 1 ] < pnt [ 1 ] &&
120
+ pnt [ 1 ] <= model . maxBounds [ 1 ] &&
121
+ model . minBounds [ 2 ] < pnt [ 2 ] &&
122
+ pnt [ 2 ] <= model . maxBounds [ 2 ]
123
+ ? 1
124
+ : 0 ;
125
+
126
+ publicAPI . containsPointByData = ( pnt ) =>
127
+ model . minDataBounds [ 0 ] <= pnt [ 0 ] &&
128
+ pnt [ 0 ] <= model . maxDataBounds [ 0 ] &&
129
+ model . minDataBounds [ 1 ] <= pnt [ 1 ] &&
130
+ pnt [ 1 ] <= model . maxDataBounds [ 1 ] &&
131
+ model . minDataBounds [ 2 ] <= pnt [ 2 ] &&
132
+ pnt [ 2 ] <= model . maxDataBounds [ 2 ]
133
+ ? 1
134
+ : 0 ;
135
+
109
136
//------------------------------------------------------------------------------
110
137
publicAPI . updateCounterAndDataBounds = ( point , nHits , updateData ) => {
111
138
model . numberOfPoints += nHits ;
@@ -183,6 +210,7 @@ function vtkIncrementalOctreeNode(publicAPI, model) {
183
210
publicAPI . getChild = ( i ) => model . children [ i ] ;
184
211
185
212
//------------------------------------------------------------------------------
213
+ /* eslint-disable no-use-before-define */
186
214
publicAPI . separateExactlyDuplicatePointsFromNewInsertion = (
187
215
points ,
188
216
pntIds ,
@@ -222,14 +250,14 @@ function vtkIncrementalOctreeNode(publicAPI, model) {
222
250
// create eight child nodes
223
251
// FIXME: May be too slow to use vtk newInstance()
224
252
ocNode . children = [
225
- vtkIncrementalOctreeNode . newInstance ( ) ,
226
- vtkIncrementalOctreeNode . newInstance ( ) ,
227
- vtkIncrementalOctreeNode . newInstance ( ) ,
228
- vtkIncrementalOctreeNode . newInstance ( ) ,
229
- vtkIncrementalOctreeNode . newInstance ( ) ,
230
- vtkIncrementalOctreeNode . newInstance ( ) ,
231
- vtkIncrementalOctreeNode . newInstance ( ) ,
232
- vtkIncrementalOctreeNode . newInstance ( ) ,
253
+ newInstance ( ) ,
254
+ newInstance ( ) ,
255
+ newInstance ( ) ,
256
+ newInstance ( ) ,
257
+ newInstance ( ) ,
258
+ newInstance ( ) ,
259
+ newInstance ( ) ,
260
+ newInstance ( ) ,
233
261
] ;
234
262
for ( i = 0 ; i < 8 ; i ++ ) {
235
263
// x-bound: axis 0
@@ -244,7 +272,7 @@ function vtkIncrementalOctreeNode(publicAPI, model) {
244
272
octMin [ 2 ] = boxPtr [ OCTREE_CHILD_BOUNDS_LUT [ i ] [ 2 ] [ 0 ] ] [ 2 ] ;
245
273
octMax [ 2 ] = boxPtr [ OCTREE_CHILD_BOUNDS_LUT [ i ] [ 2 ] [ 1 ] ] [ 2 ] ;
246
274
247
- ocNode . children [ i ] = vtkIncrementalOctreeNode . newInstance ( ) ;
275
+ ocNode . children [ i ] = newInstance ( ) ;
248
276
ocNode . children [ i ] . setParent ( ocNode ) ;
249
277
ocNode . children [ i ] . setBounds (
250
278
octMin [ 0 ] ,
@@ -284,6 +312,7 @@ function vtkIncrementalOctreeNode(publicAPI, model) {
284
312
) ;
285
313
return pointIdx ;
286
314
} ;
315
+ /* eslint-enable no-use-before-define */
287
316
288
317
//------------------------------------------------------------------------------
289
318
publicAPI . createChildNodes = (
@@ -355,8 +384,9 @@ function vtkIncrementalOctreeNode(publicAPI, model) {
355
384
octMax [ 2 ] = boxPtr [ OCTREE_CHILD_BOUNDS_LUT [ i ] [ 2 ] [ 1 ] ] [ 2 ] ;
356
385
357
386
// This call internally sets the cener and default data bounding box, too.
358
- model . children [ i ] = vtkIncrementalOctreeNode . newInstance ( ) ;
359
- model . children [ i ] . iD = nbNodes ++ ;
387
+ // eslint-disable-next-line no-use-before-define
388
+ model . children [ i ] = newInstance ( ) ;
389
+ // model.children[i].iD = nbNodes++;
360
390
model . children [ i ] . setParent ( publicAPI ) ;
361
391
model . children [ i ] . setBounds (
362
392
octMin [ 0 ] ,
@@ -380,7 +410,7 @@ function vtkIncrementalOctreeNode(publicAPI, model) {
380
410
tempId = pntIds [ i ] ;
381
411
points . getPoint ( tempId , tempPt ) ;
382
412
target = publicAPI . getChildIndex ( tempPt ) ;
383
- model . children [ target ] . getPointIdSet ( ) . insertNextId ( tempId ) ;
413
+ model . children [ target ] . getPointIdSet ( ) . push ( tempId ) ;
384
414
model . children [ target ] . updateCounterAndDataBounds ( tempPt ) ;
385
415
numIds [ target ] ++ ;
386
416
}
@@ -435,7 +465,7 @@ function vtkIncrementalOctreeNode(publicAPI, model) {
435
465
// objects at hand.
436
466
for ( i = 0 ; i < 8 ; i ++ ) {
437
467
if ( numIds [ i ] === 0 || i === dvidId ) {
438
- model . children [ i ] . deletePointIdSet ( ) ;
468
+ model . children [ i ] . getPointIdSet ( ) . length = 0 ;
439
469
}
440
470
}
441
471
@@ -763,7 +793,7 @@ export function extend(publicAPI, model, initialValues = {}) {
763
793
6
764
794
) ;
765
795
766
- macro . get ( publicAPI , model , [ 'pointIdSet' ] ) ;
796
+ macro . get ( publicAPI , model , [ 'pointIdSet' , 'numberOfPoints' ] ) ;
767
797
768
798
// TODO: No get?
769
799
macro . set ( publicAPI , model , [ 'parent' ] ) ;
0 commit comments