@@ -17,7 +17,7 @@ import (
17
17
18
18
// Helper function for generating a new empty octree.
19
19
func createNewOctree (center r3.Vector , side float64 ) (* BasicOctree , error ) {
20
- basicOct , err := NewBasicOctree (center , side )
20
+ basicOct , err := NewBasicOctree (center , side , defaultConfidenceThreshold )
21
21
if err != nil {
22
22
return nil , err
23
23
}
@@ -98,6 +98,10 @@ func TestBasicOctreeNew(t *testing.T) {
98
98
func TestBasicOctreeSet (t * testing.T ) {
99
99
center := r3.Vector {X : 0 , Y : 0 , Z : 0 }
100
100
side := 2.0
101
+ d1 := 99
102
+ d2 := 100
103
+ d3 := 75
104
+ d4 := 10
101
105
102
106
t .Run ("Set point into empty leaf node into basic octree" , func (t * testing.T ) {
103
107
basicOct , err := createNewOctree (center , side )
@@ -119,17 +123,15 @@ func TestBasicOctreeSet(t *testing.T) {
119
123
basicOct , err := createNewOctree (center , side )
120
124
test .That (t , err , test .ShouldBeNil )
121
125
122
- d1 := 1
123
126
err = basicOct .Set (r3.Vector {X : 0 , Y : 0 , Z : 0 }, NewValueData (d1 ))
124
127
test .That (t , err , test .ShouldBeNil )
125
128
mp := basicOct .MaxVal ()
126
129
test .That (t , mp , test .ShouldEqual , d1 )
127
130
128
- d2 := 2
129
131
err = basicOct .Set (r3.Vector {X : - .5 , Y : 0 , Z : 0 }, NewValueData (d2 ))
130
132
test .That (t , err , test .ShouldBeNil )
131
133
test .That (t , basicOct .node .nodeType , test .ShouldResemble , internalNode )
132
- test .That (t , basicOct .Size (), test .ShouldEqual , 2 )
134
+ test .That (t , basicOct .Size (), test .ShouldEqual , side )
133
135
mp = basicOct .node .children [0 ].MaxVal ()
134
136
test .That (t , mp , test .ShouldEqual , int (math .Max (float64 (d1 ), float64 (d2 ))))
135
137
mp = basicOct .MaxVal ()
@@ -142,19 +144,16 @@ func TestBasicOctreeSet(t *testing.T) {
142
144
basicOct , err := createNewOctree (center , side )
143
145
test .That (t , err , test .ShouldBeNil )
144
146
145
- d3 := 3
146
147
err = basicOct .Set (r3.Vector {X : 0 , Y : 0 , Z : 0 }, NewValueData (d3 ))
147
148
test .That (t , err , test .ShouldBeNil )
148
149
mp := basicOct .MaxVal ()
149
150
test .That (t , mp , test .ShouldEqual , d3 )
150
151
151
- d2 := 2
152
152
err = basicOct .Set (r3.Vector {X : - .5 , Y : 0 , Z : 0 }, NewValueData (d2 ))
153
153
test .That (t , err , test .ShouldBeNil )
154
154
mp = basicOct .node .children [0 ].MaxVal ()
155
155
test .That (t , mp , test .ShouldEqual , int (math .Max (float64 (d2 ), float64 (d3 ))))
156
156
157
- d4 := 4
158
157
err = basicOct .Set (r3.Vector {X : - .4 , Y : 0 , Z : 0 }, NewValueData (d4 ))
159
158
test .That (t , err , test .ShouldBeNil )
160
159
test .That (t , basicOct .node .nodeType , test .ShouldResemble , internalNode )
@@ -180,13 +179,11 @@ func TestBasicOctreeSet(t *testing.T) {
180
179
basicOct , err := createNewOctree (center , side )
181
180
test .That (t , err , test .ShouldBeNil )
182
181
183
- d1 := 1
184
182
err = basicOct .Set (r3.Vector {X : 0 , Y : 0 , Z : 0 }, NewValueData (d1 ))
185
183
test .That (t , err , test .ShouldBeNil )
186
184
mp := basicOct .MaxVal ()
187
185
test .That (t , mp , test .ShouldEqual , d1 )
188
186
189
- d2 := 2
190
187
err = basicOct .Set (r3.Vector {X : - .5 , Y : 0 , Z : 0 }, NewValueData (d2 ))
191
188
test .That (t , err , test .ShouldBeNil )
192
189
test .That (t , basicOct .size , test .ShouldEqual , 2 )
@@ -200,14 +197,12 @@ func TestBasicOctreeSet(t *testing.T) {
200
197
basicOct , err := createNewOctree (center , side )
201
198
test .That (t , err , test .ShouldBeNil )
202
199
203
- d1 := 1
204
200
err = basicOct .Set (r3.Vector {X : 0 , Y : 0 , Z : 0 }, NewValueData (d1 ))
205
201
test .That (t , err , test .ShouldBeNil )
206
202
test .That (t , basicOct .node .point .D .Value (), test .ShouldEqual , d1 )
207
203
mp := basicOct .MaxVal ()
208
204
test .That (t , mp , test .ShouldEqual , d1 )
209
205
210
- d2 := 2
211
206
err = basicOct .Set (r3.Vector {X : 0 , Y : 0 , Z : 0 }, NewValueData (d2 ))
212
207
test .That (t , err , test .ShouldBeNil )
213
208
test .That (t , basicOct .node .point .D .Value (), test .ShouldEqual , d2 )
@@ -243,7 +238,6 @@ func TestBasicOctreeSet(t *testing.T) {
243
238
244
239
basicOct = createLopsidedOctree (basicOct , 0 , maxRecursionDepth - 1 )
245
240
246
- d1 := 1
247
241
err = basicOct .Set (r3.Vector {X : - 1 , Y : - 1 , Z : - 1 }, NewValueData (d1 ))
248
242
test .That (t , err , test .ShouldBeNil )
249
243
mp := basicOct .MaxVal ()
@@ -296,9 +290,9 @@ func TestBasicOctreeAt(t *testing.T) {
296
290
test .That (t , err , test .ShouldBeNil )
297
291
298
292
pointsAndData := []PointAndData {
299
- {P : r3.Vector {X : 0 , Y : 0 , Z : 0 }, D : NewValueData (1 )},
300
- {P : r3.Vector {X : - .5 , Y : 0 , Z : 0 }, D : NewValueData (2 )},
301
- {P : r3.Vector {X : - 0.4 , Y : 0 , Z : 0 }, D : NewValueData (3 )},
293
+ {P : r3.Vector {X : 0 , Y : 0 , Z : 0 }, D : NewValueData (51 )},
294
+ {P : r3.Vector {X : - .5 , Y : 0 , Z : 0 }, D : NewValueData (52 )},
295
+ {P : r3.Vector {X : - 0.4 , Y : 0 , Z : 0 }, D : NewValueData (53 )},
302
296
}
303
297
304
298
err = addPoints (basicOct , pointsAndData )
@@ -393,9 +387,9 @@ func TestBasicOctreeIterate(t *testing.T) {
393
387
test .That (t , err , test .ShouldBeNil )
394
388
395
389
pointsAndData := []PointAndData {
396
- {P : r3.Vector {X : 0 , Y : 0 , Z : 0 }, D : NewValueData (1 )},
397
- {P : r3.Vector {X : .5 , Y : 0 , Z : 0 }, D : NewValueData (2 )},
398
- {P : r3.Vector {X : .6 , Y : 0 , Z : 0 }, D : NewValueData (1 )},
390
+ {P : r3.Vector {X : 0 , Y : 0 , Z : 0 }, D : NewValueData (50 )},
391
+ {P : r3.Vector {X : .5 , Y : 0 , Z : 0 }, D : NewValueData (51 )},
392
+ {P : r3.Vector {X : .6 , Y : 0 , Z : 0 }, D : NewValueData (50 )},
399
393
}
400
394
401
395
err = addPoints (basicOct , pointsAndData )
@@ -414,7 +408,7 @@ func TestBasicOctreeIterate(t *testing.T) {
414
408
// Partial iteration - applies function to only first point
415
409
total = 0
416
410
basicOct .Iterate (0 , 0 , func (p r3.Vector , d Data ) bool {
417
- if d .Value () == 1 {
411
+ if d .Value () == pointsAndData [ 0 ]. D . Value () {
418
412
total += d .Value ()
419
413
return true
420
414
}
@@ -570,7 +564,7 @@ func TestBasicOctreePointcloudIngestion(t *testing.T) {
570
564
center := getCenterFromPcMetaData (startPC .MetaData ())
571
565
maxSideLength := getMaxSideLengthFromPcMetaData (startPC .MetaData ())
572
566
573
- basicOct , err := NewBasicOctree (center , maxSideLength )
567
+ basicOct , err := NewBasicOctree (center , maxSideLength , defaultConfidenceThreshold )
574
568
test .That (t , err , test .ShouldBeNil )
575
569
576
570
startPC .Iterate (0 , 0 , func (p r3.Vector , d Data ) bool {
@@ -633,21 +627,21 @@ func testPCDToBasicOctree(t *testing.T, artifactPath string) {
633
627
validateBasicOctree (t , basicOct , basicOct .center , basicOct .sideLength )
634
628
}
635
629
636
- func createPopulatedOctree ( sign int ) (* BasicOctree , error ) {
630
+ func createExampleOctree ( ) (* BasicOctree , error ) {
637
631
center := r3.Vector {X : 0 , Y : 0 , Z : 0 }
638
632
side := 2.0
639
633
octree , err := createNewOctree (center , side )
640
634
if err != nil {
641
635
return nil , err
642
636
}
643
637
pointsAndData := []PointAndData {
644
- {P : r3.Vector {X : 0 , Y : 0 , Z : 0 }, D : NewValueData (2 * sign )},
645
- {P : r3.Vector {X : .5 , Y : 0 , Z : 0 }, D : NewValueData (3 * sign )},
646
- {P : r3.Vector {X : .5 , Y : 0 , Z : .5 }, D : NewValueData (10 * sign )},
647
- {P : r3.Vector {X : .5 , Y : .5 , Z : 0 }, D : NewValueData (1 * sign )},
648
- {P : r3.Vector {X : .55 , Y : .55 , Z : 0 }, D : NewValueData (4 * sign )},
649
- {P : r3.Vector {X : - .55 , Y : - .55 , Z : 0 }, D : NewValueData (5 * sign )},
650
- {P : r3.Vector {X : .755 , Y : .755 , Z : 0 }, D : NewValueData (6 * sign )},
638
+ {P : r3.Vector {X : 0 , Y : 0 , Z : 0 }, D : NewValueData (52 )},
639
+ {P : r3.Vector {X : .5 , Y : 0 , Z : 0 }, D : NewValueData (53 )},
640
+ {P : r3.Vector {X : .5 , Y : 0 , Z : .5 }, D : NewValueData (60 )},
641
+ {P : r3.Vector {X : .5 , Y : .5 , Z : 0 }, D : NewValueData (51 )},
642
+ {P : r3.Vector {X : .55 , Y : .55 , Z : 0 }, D : NewValueData (54 )},
643
+ {P : r3.Vector {X : - .55 , Y : - .55 , Z : 0 }, D : NewValueData (55 )},
644
+ {P : r3.Vector {X : .755 , Y : .755 , Z : 0 }, D : NewValueData (56 )},
651
645
}
652
646
653
647
err = addPoints (octree , pointsAndData )
@@ -659,16 +653,16 @@ func createPopulatedOctree(sign int) (*BasicOctree, error) {
659
653
660
654
func TestCachedMaxProbability (t * testing.T ) {
661
655
t .Run ("get the max val from an octree" , func (t * testing.T ) {
662
- octree , err := createPopulatedOctree ( 1 )
656
+ octree , err := createExampleOctree ( )
663
657
test .That (t , err , test .ShouldBeNil )
664
658
665
659
validateBasicOctree (t , octree , octree .center , octree .sideLength )
666
660
667
661
mp := octree .MaxVal ()
668
- test .That (t , mp , test .ShouldEqual , 10 )
662
+ test .That (t , mp , test .ShouldEqual , 60 )
669
663
670
664
mp = octree .node .children [0 ].MaxVal ()
671
- test .That (t , mp , test .ShouldEqual , 5 )
665
+ test .That (t , mp , test .ShouldEqual , 55 )
672
666
})
673
667
674
668
t .Run ("cannot set arbitrary values into the octree" , func (t * testing.T ) {
@@ -678,23 +672,10 @@ func TestCachedMaxProbability(t *testing.T) {
678
672
children : nil ,
679
673
nodeType : leafNodeFilled ,
680
674
point : & PointAndData {P : r3.Vector {1 , 2 , 3 }, D : d },
681
- maxVal : emptyProb ,
675
+ maxVal : defaultConfidenceThreshold ,
682
676
}
683
677
test .That (t , node , test .ShouldResemble , filledNode )
684
678
})
685
-
686
- t .Run ("setting negative values" , func (t * testing.T ) {
687
- octree , err := createPopulatedOctree (- 1 )
688
- test .That (t , err , test .ShouldBeNil )
689
-
690
- validateBasicOctree (t , octree , octree .center , octree .sideLength )
691
-
692
- mp := octree .MaxVal ()
693
- test .That (t , mp , test .ShouldEqual , - 1 )
694
-
695
- mp = octree .node .children [0 ].MaxVal ()
696
- test .That (t , mp , test .ShouldEqual , - 2 )
697
- })
698
679
}
699
680
700
681
// Test the various geometry-specific interface methods.
0 commit comments