1
1
package net .imglib2 .kdtree ;
2
2
3
- import java .util .List ;
4
3
import java .util .function .IntFunction ;
5
4
import java .util .function .Supplier ;
6
5
import net .imglib2 .RandomAccessibleInterval ;
@@ -38,59 +37,15 @@ public class KDTreeData< T >
38
37
39
38
private volatile RealInterval boundingBox ;
40
39
41
- public KDTreeData ( double [][] positions , List < T > values )
42
- {
43
- numPoints = values .size ();
44
- numDimensions = positions .length ;
45
- this .positions = new KDTreePositions .Nested (positions );
46
- this .values = new KDTreeValues .ListValues <>(values );
47
- }
48
-
49
- public KDTreeData ( double [][] positions , List < T > values , RealInterval boundingBox )
50
- {
51
- this ( positions , values );
52
- this .boundingBox = boundingBox ;
53
- }
54
-
55
- public KDTreeData ( double [][] positions , RandomAccessibleInterval < T > values )
56
- {
57
- numPoints = ( int ) values .dimension ( 0 );
58
- numDimensions = positions .length ;
59
- this .positions = new KDTreePositions .Nested (positions );
60
- this .values = new KDTreeValues .ImgValues <>(values );
61
- }
62
-
63
- public KDTreeData ( double [][] positions , RandomAccessibleInterval < T > values , RealInterval boundingBox )
64
- {
65
- this ( positions , values );
66
- this .boundingBox = boundingBox ;
67
- }
68
-
69
- public KDTreeData ( double [] positions , List < T > values )
70
- {
71
- numPoints = values .size ();
72
- numDimensions = positions .length / numPoints ;
73
- this .positions = new KDTreePositions .Flat (positions , numDimensions );
74
- this .values = new KDTreeValues .ListValues <>(values );
75
- }
76
-
77
- public KDTreeData ( double [] positions , List < T > values , RealInterval boundingBox )
78
- {
79
- this ( positions , values );
80
- this .boundingBox = boundingBox ;
81
- }
82
-
83
- public KDTreeData ( double [] positions , RandomAccessibleInterval < T > values )
84
- {
85
- numPoints = ( int ) values .dimension ( 0 );
86
- numDimensions = positions .length / numPoints ;
87
- this .positions = new KDTreePositions .Flat (positions , numDimensions );
88
- this .values = new KDTreeValues .ImgValues <>(values );
40
+ public KDTreeData (KDTreePositions positions , KDTreeValues <T > values ) {
41
+ numPoints = positions .numPoints ();
42
+ numDimensions = positions .numDimensions ();
43
+ this .positions = positions ;
44
+ this .values = values ;
89
45
}
90
46
91
- public KDTreeData ( double [] positions , RandomAccessibleInterval < T > values , RealInterval boundingBox )
92
- {
93
- this ( positions , values );
47
+ public KDTreeData (KDTreePositions positions , KDTreeValues <T > values , RealInterval boundingBox ) {
48
+ this (positions , values );
94
49
this .boundingBox = boundingBox ;
95
50
}
96
51
@@ -100,11 +55,6 @@ public T type()
100
55
return values .type ();
101
56
}
102
57
103
- public KDTreePositions positions ()
104
- {
105
- return positions ;
106
- }
107
-
108
58
public double [] getFlatPositions () {
109
59
return positions .getFlatPositions ();
110
60
}
@@ -188,23 +138,17 @@ public static < L extends RealLocalizable, T > KDTreeData< T > create(
188
138
final int [] tree = KDTreeUtils .makeTree ( points );
189
139
final int [] invtree = KDTreeUtils .invert ( tree );
190
140
191
- final boolean useFlatLayout = ( long ) numDimensions * numPoints <= KDTreeUtils .MAX_ARRAY_SIZE ;
192
- if ( storeValuesAsNativeImg && KDTreeUtils .getType ( values ) instanceof NativeType )
193
- {
194
- @ SuppressWarnings ( "unchecked" )
195
- final Img < T > treeValues = ( Img < T > ) KDTreeUtils .orderValuesImg ( invtree , ( Iterable ) values );
196
- if ( useFlatLayout )
197
- return new KDTreeData <>(KDTreeUtils .reorderToFlatLayout ( points , tree ), treeValues );
198
- else
199
- return new KDTreeData <>(KDTreeUtils .reorder ( points , tree ), treeValues );
200
- }
201
- else
202
- {
203
- final List < T > treeValues = KDTreeUtils .orderValuesList ( invtree , values );
204
- if ( useFlatLayout )
205
- return new KDTreeData <>(KDTreeUtils .reorderToFlatLayout ( points , tree ), treeValues );
206
- else
207
- return new KDTreeData <>(KDTreeUtils .reorder ( points , tree ), treeValues );
208
- }
141
+ final boolean storeAsImg = (storeValuesAsNativeImg && KDTreeUtils .getType (values ) instanceof NativeType );
142
+ @ SuppressWarnings ("unchecked" )
143
+ final KDTreeValues <T > treeValues = (storeAsImg )
144
+ ? new KDTreeValues .ImgValues <>((Img <T >) KDTreeUtils .orderValuesImg (invtree , (Iterable ) values ))
145
+ : new KDTreeValues .ListValues <>(KDTreeUtils .orderValuesList (invtree , values ));
146
+
147
+ final boolean useFlatLayout = (long ) numDimensions * numPoints <= KDTreeUtils .MAX_ARRAY_SIZE ;
148
+ final KDTreePositions treePositions = (useFlatLayout )
149
+ ? new KDTreePositions .Flat (KDTreeUtils .reorderToFlatLayout (points , tree ), numDimensions )
150
+ : new KDTreePositions .Nested (KDTreeUtils .reorder (points , tree ));
151
+
152
+ return new KDTreeData <>(treePositions , treeValues );
209
153
}
210
154
}
0 commit comments