Skip to content

Commit 43ecde8

Browse files
sync
1 parent 5d9eea8 commit 43ecde8

File tree

6 files changed

+123
-104
lines changed

6 files changed

+123
-104
lines changed

src/Aardvark.Geometry.Quadtree/Layer.fs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -543,9 +543,9 @@ module Layer =
543543
printfn "[Layer.flattenTyped] debugCollisionSamples.Count = %d" debugCollisionSamples.Count
544544
printfn "[Layer.flattenTyped] debugCountOccupied.Count = %d / %d ... %5.2f" coundOccupiedSamples finalMask.Length (float coundOccupiedSamples / float finalMask.Length)
545545

546-
let countOccupied = finalMask |> Array.filter (fun x -> x <> 255uy) |> Array.length
547-
let countUndefined = finalMask |> Array.filter (fun x -> x = 255uy) |> Array.length
548-
printfn "[Layer.flattenTyped][OCCUPANCY][e = %d][%A][%A] countOccupied = %d, countUndefined = %d" e finalWindow finalWindow.Size countOccupied countUndefined
546+
let countOccupied = finalMask |> Array.filter (fun x -> x <> 255uy) |> Array.length
547+
let countUndefined = finalMask |> Array.filter (fun x -> x = 255uy) |> Array.length
548+
printfn "[Layer.flattenTyped][OCCUPANCY][e = %d][%A][%A] countOccupied = %d, countUndefined = %d" e finalWindow finalWindow.Size countOccupied countUndefined
549549

550550
// rewrite mask (1 ... occupied, 0 ... undefined)
551551
for i = 0 to finalMask.Length-1 do

src/Aardvark.Geometry.Quadtree/Node.fs

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ and
166166
| OutOfCoreNode of QOutOfCoreNode
167167
| InMemoryInner of QInnerNode
168168
| InMemoryMerge of QMergeNode
169-
| MultiMerge of QMultiMergeNode
169+
//| MultiMerge of QMultiMergeNode
170170
| LinkedNode of QLinkedNode
171171
with
172172

@@ -177,7 +177,7 @@ and
177177
| InMemoryNode n -> n.Id
178178
| InMemoryInner n -> n.Id
179179
| InMemoryMerge n -> n.Id
180-
| MultiMerge n -> n.Id
180+
//| MultiMerge n -> n.Id
181181
| OutOfCoreNode n -> n.Load().Id
182182
| LinkedNode n -> n.Id
183183

@@ -188,7 +188,7 @@ and
188188
| InMemoryNode n -> n.Cell
189189
| InMemoryInner n -> n.Cell
190190
| InMemoryMerge n -> n.Cell
191-
| MultiMerge n -> n.Cell
191+
//| MultiMerge n -> n.Cell
192192
| OutOfCoreNode n -> n.Load().Cell
193193
| LinkedNode n -> n.Target.Cell
194194

@@ -199,7 +199,7 @@ and
199199
| InMemoryNode n -> n.ExactBoundingBox
200200
| InMemoryInner n -> n.ExactBoundingBox
201201
| InMemoryMerge n -> n.ExactBoundingBox
202-
| MultiMerge n -> n.ExactBoundingBox
202+
//| MultiMerge n -> n.ExactBoundingBox
203203
| OutOfCoreNode n -> n.Load().ExactBoundingBox
204204
| LinkedNode n -> n.Target.ExactBoundingBox
205205

@@ -210,7 +210,7 @@ and
210210
| InMemoryNode n -> n.SplitLimitExponent
211211
| InMemoryInner n -> n.SplitLimitExponent
212212
| InMemoryMerge n -> n.SplitLimitExponent
213-
| MultiMerge n -> n.SplitLimitExponent
213+
//| MultiMerge n -> n.SplitLimitExponent
214214
| OutOfCoreNode n -> n.Load().SplitLimitExponent
215215
| LinkedNode n -> n.Target.SplitLimitExponent
216216

@@ -220,7 +220,7 @@ and
220220
| InMemoryNode _ -> None
221221
| InMemoryInner n -> n.SubNodes |> Array.tryFind (fun sn -> match sn with | NoNode -> false | _ -> true)
222222
| InMemoryMerge n -> Some n.First
223-
| MultiMerge n -> Some n.Nodes[0]
223+
//| MultiMerge n -> Some n.Nodes[0]
224224
| OutOfCoreNode n -> n.Load().GetFirstNonEmptySubNode()
225225
| LinkedNode n -> n.Target.GetFirstNonEmptySubNode()
226226

@@ -232,7 +232,7 @@ and
232232
| Some n -> n.ContainsLayer(semantic)
233233
| None -> failwith "Invariant 0a85f195-7feb-4ecb-912d-7fd4e7024951."
234234
| InMemoryMerge _ -> false
235-
| MultiMerge _ -> false
235+
//| MultiMerge _ -> false
236236
| OutOfCoreNode n -> n.Load().ContainsLayer semantic
237237
| LinkedNode n -> n.Target.ContainsLayer semantic
238238

@@ -242,7 +242,7 @@ and
242242
| InMemoryNode n -> Some(n.LayerSet)
243243
| InMemoryInner _ -> None
244244
| InMemoryMerge _ -> None
245-
| MultiMerge _ -> None
245+
//| MultiMerge _ -> None
246246
| OutOfCoreNode n -> n.Load().LayerSet
247247
| LinkedNode n -> n.Target.LayerSet
248248

@@ -252,7 +252,7 @@ and
252252
| InMemoryNode _ -> true
253253
| InMemoryInner _ -> false
254254
| InMemoryMerge _ -> false
255-
| MultiMerge _ -> false
255+
//| MultiMerge _ -> false
256256
| OutOfCoreNode _ -> true
257257
| LinkedNode n -> n.Target.IsLeafNode
258258

@@ -262,7 +262,7 @@ and
262262
| InMemoryNode n -> n.HasMask
263263
| InMemoryInner n -> n.HasMask
264264
| InMemoryMerge n -> n.HasMask
265-
| MultiMerge n -> n.HasMask
265+
//| MultiMerge n -> n.HasMask
266266
| OutOfCoreNode n -> n.HasMask
267267
| LinkedNode n -> n.Target.HasMask
268268

@@ -297,14 +297,14 @@ and
297297
let updatedNode = { n with First = q1; Second = q2 }
298298
(true, InMemoryMerge updatedNode)
299299

300-
| MultiMerge n ->
301-
let ns = n.Nodes |> Array.map (fun x -> x.UpdateLayerSemantic(oldSemantic, newSemantic))
302-
let isNotChanged = ns |> Array.forall (fun (x, _) -> x = false)
303-
if isNotChanged then
304-
unchanged
305-
else
306-
let updatedNode = { n with Nodes = ns |> Array.map snd }
307-
(true, MultiMerge updatedNode)
300+
//| MultiMerge n ->
301+
// let ns = n.Nodes |> Array.map (fun x -> x.UpdateLayerSemantic(oldSemantic, newSemantic))
302+
// let isNotChanged = ns |> Array.forall (fun (x, _) -> x = false)
303+
// if isNotChanged then
304+
// unchanged
305+
// else
306+
// let updatedNode = { n with Nodes = ns |> Array.map snd }
307+
// (true, MultiMerge updatedNode)
308308

309309
| InMemoryNode n ->
310310
match n.UpdateLayerSemantic(oldSemantic, newSemantic) with
@@ -320,8 +320,8 @@ and
320320
match this with
321321
| NoNode
322322
| InMemoryInner _
323-
| InMemoryMerge _
324-
| MultiMerge _ -> sprintf "Layer not found. %A. Error 2c634f5f-d359-4523-b87a-a96d2522c018." def |> failwith
323+
//| MultiMerge _
324+
| InMemoryMerge _ -> sprintf "Layer not found. %A. Error 2c634f5f-d359-4523-b87a-a96d2522c018." def |> failwith
325325
| InMemoryNode n -> n.LayerSet.GetLayer def
326326
| OutOfCoreNode n -> n.Load().LayerSet.Value.GetLayer def
327327
| LinkedNode n -> n.Target.GetLayer def
@@ -331,8 +331,8 @@ and
331331
match this with
332332
| NoNode
333333
| InMemoryInner _
334-
| InMemoryMerge _
335-
| MultiMerge _ -> sprintf "Layer not found. %A. Error f33f39a9-2394-473f-8dae-76bd8baaaafb." def |> failwith
334+
//| MultiMerge _
335+
| InMemoryMerge _ -> sprintf "Layer not found. %A. Error f33f39a9-2394-473f-8dae-76bd8baaaafb." def |> failwith
336336
| InMemoryNode n -> n.LayerSet.GetLayer<'a> def
337337
| OutOfCoreNode n -> n.Load().LayerSet.Value.GetLayer<'a> def
338338
| LinkedNode n -> n.Target.GetLayer<'a> def
@@ -341,8 +341,8 @@ and
341341
match this with
342342
| NoNode
343343
| InMemoryInner _
344-
| InMemoryMerge _
345-
| MultiMerge _ -> None
344+
//| MultiMerge _
345+
| InMemoryMerge _ -> None
346346
| InMemoryNode n -> n.LayerSet.TryGetLayer def
347347
| OutOfCoreNode n -> match n.Load().LayerSet with
348348
| Some ls -> ls.TryGetLayer def
@@ -353,8 +353,8 @@ and
353353
match this with
354354
| NoNode
355355
| InMemoryInner _
356-
| InMemoryMerge _
357-
| MultiMerge _ -> None
356+
//| MultiMerge _
357+
| InMemoryMerge _ -> None
358358
| InMemoryNode n -> n.LayerSet.TryGetLayer<'a> def
359359
| OutOfCoreNode n -> match n.Load().LayerSet with
360360
| Some ls -> ls.TryGetLayer<'a> def

src/Aardvark.Geometry.Quadtree/Quadtree.fs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ module Quadtree =
4848
| InMemoryInner n -> for subNode in n.SubNodes do subNode |> stack.Push
4949
| InMemoryMerge n -> n.First |> stack.Push
5050
n.Second |> stack.Push
51-
| MultiMerge n -> for x in n.Nodes do stack.Push x
51+
//| MultiMerge n -> for x in n.Nodes do stack.Push x
5252
| LinkedNode n -> n.Target |> stack.Push
5353
}
5454

@@ -71,7 +71,7 @@ module Quadtree =
7171
| InMemoryMerge n -> n.First |> stack.Push
7272
n.Second |> stack.Push
7373
yield node
74-
| MultiMerge n -> for x in n.Nodes do stack.Push x
74+
//| MultiMerge n -> for x in n.Nodes do stack.Push x
7575
yield node
7676
| LinkedNode n -> n.Target |> stack.Push
7777
}
@@ -96,8 +96,8 @@ module Quadtree =
9696
| InMemoryMerge n -> yield node
9797
n.First |> queue.Enqueue
9898
n.Second |> queue.Enqueue
99-
| MultiMerge n -> yield node
100-
for x in n.Nodes do queue.Enqueue x
99+
//| MultiMerge n -> yield node
100+
// for x in n.Nodes do queue.Enqueue x
101101
| LinkedNode n -> n.Target |> queue.Enqueue
102102
}
103103

@@ -130,8 +130,8 @@ module Quadtree =
130130
| InMemoryMerge n -> n.First |> stack.Push
131131
n.Second |> stack.Push
132132
weightInner
133-
| MultiMerge n -> for x in n.Nodes do stack.Push x
134-
weightInner
133+
//| MultiMerge n -> for x in n.Nodes do stack.Push x
134+
// weightInner
135135
| LinkedNode n -> n.Target |> stack.Push
136136
weightInner
137137

@@ -176,12 +176,12 @@ module Quadtree =
176176
print (indent + " ") n.Second
177177
printfn "%s FIRST :" indent
178178
print (indent + " ") n.First
179-
| MultiMerge n -> printfn "%sMultiMerge %A %A" indent n.Cell n.Id
180-
let mutable i = 0
181-
for x in n.Nodes do
182-
printfn "%s Nodes[%d]:" indent i
183-
print (indent + " ") x
184-
i <- i + 1
179+
//| MultiMerge n -> printfn "%sMultiMerge %A %A" indent n.Cell n.Id
180+
// let mutable i = 0
181+
// for x in n.Nodes do
182+
// printfn "%s Nodes[%d]:" indent i
183+
// print (indent + " ") x
184+
// i <- i + 1
185185
| LinkedNode n -> printfn "%sLinkedNode %A" indent n.Target.Cell
186186
print (indent + " ") n.Target
187187

src/Aardvark.Geometry.Quadtree/Query.fs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -379,7 +379,7 @@ module Query =
379379
let r2 = n.Second |> recurse |> Seq.toList
380380
if r2.Length > 0 then yield! r2
381381

382-
| MultiMerge n -> failwith "TODO 53cbaacb-02b1-4012-afff-c874d0e105e4"
382+
//| MultiMerge n -> failwith "TODO 53cbaacb-02b1-4012-afff-c874d0e105e4"
383383

384384
| InMemoryNode n ->
385385

@@ -523,7 +523,7 @@ module Query =
523523
let r2 = n.Second |> recurse |> Seq.toList
524524
if r2.Length > 0 then yield! r2
525525

526-
| MultiMerge n -> failwith "TODO c475a1e4-d61a-421f-88a2-6dae48952e7d"
526+
//| MultiMerge n -> failwith "TODO c475a1e4-d61a-421f-88a2-6dae48952e7d"
527527

528528
| InMemoryNode n ->
529529

@@ -622,7 +622,7 @@ module Query =
622622
| InMemoryNode n -> yield { Node = n; Selection = FullySelected }
623623
| InMemoryMerge n -> yield! Full n.First
624624
yield! Full n.Second
625-
| MultiMerge _ -> failwith "TODO 0470fae0-1232-4167-9c1f-74002c9afd41"
625+
//| MultiMerge _ -> failwith "TODO 0470fae0-1232-4167-9c1f-74002c9afd41"
626626
| LinkedNode n -> yield! Full n.Target
627627
| OutOfCoreNode n -> yield! Full (n.Load())
628628
}
@@ -717,7 +717,7 @@ module Sample =
717717
)
718718
yield! gs
719719

720-
| MultiMerge n -> failwith "TODO 7aab61ac-faf3-42a8-8f11-9f9080d8a6a8"
720+
//| MultiMerge n -> failwith "TODO 7aab61ac-faf3-42a8-8f11-9f9080d8a6a8"
721721

722722
| InMemoryNode n ->
723723

@@ -750,8 +750,6 @@ module Sample =
750750
else
751751
Seq.empty
752752

753-
754-
755753
/// Returns sample at given position, or None if there is no sample.
756754
let Position (config : Query.Config) (position : V2d) (root : QNodeRef) : SampleResult option =
757755
let result = Positions config [| position |] root |> Seq.toArray

src/Aardvark.Geometry.Quadtree/Serialization.fs

Lines changed: 48 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -230,55 +230,55 @@ module Serialization =
230230
Dominance = dom; First = ns.[0]; Second = ns.[1]
231231
}
232232

233-
(*
234-
QMultiMergeNode
233+
//(*
234+
// QMultiMergeNode
235235

236-
durable definition 26416ce5-891d-4e7e-b29b-1e23a6a99382
237-
*)
236+
// durable definition 26416ce5-891d-4e7e-b29b-1e23a6a99382
237+
//*)
238238

239-
let private encodeQMultiMergeNode (options : SerializationOptions) (n : QMultiMergeNode) : byte[] =
240-
let map = List<KeyValuePair<Durable.Def, obj>>()
239+
//let private encodeQMultiMergeNode (options : SerializationOptions) (n : QMultiMergeNode) : byte[] =
240+
// let map = List<KeyValuePair<Durable.Def, obj>>()
241241

242-
// node properties
243-
map.Add(kvp Defs.NodeId n.Id)
244-
map.Add(kvp Defs.CellBounds n.Cell)
245-
map.Add(kvp Defs.SplitLimitExponent n.SplitLimitExponent)
246-
map.Add(kvp Defs.ExactBoundingBox n.ExactBoundingBox)
247-
map.Add(kvp Defs.HasMask (if n.HasMask then 1 else 0))
248-
249-
// collect subnode IDs
250-
let ids = n.Nodes |> Array.map (fun n -> n.Id)
251-
map.Add(kvp Defs.SubnodeIds ids)
252-
253-
DurableCodec.Serialize(Defs.NodeMerge, map)
254-
255-
let private decodeQMultiMergeNode(options: SerializationOptions) (def : Durable.Def) (o : obj) : QNodeRef =
256-
let map = o :?> ImmutableDictionary<Durable.Def, obj>
257-
let id = map.Get(Defs.NodeId) :?> Guid
258-
let cell = map.Get(Defs.CellBounds) :?> Cell2d
259-
let sle = map.Get(Defs.SplitLimitExponent) :?> int
260-
let ebb = match map.TryGetValue(Defs.ExactBoundingBox) with
261-
| true, x -> x :?> Box2d
262-
| false, _ -> Box2d.Invalid
263-
264-
let hasMask =
265-
match map.TryGetValue(Defs.HasMask) with
266-
| true, x -> (x :?> int) <> 0 // 0 means false, everything else is true
267-
| false, _ -> false
268-
269-
let nsIds = map.Get(Defs.SubnodeIds) :?> Guid[]
270-
let ns = nsIds |> Array.map (fun k ->
271-
if k = Guid.Empty then
272-
NoNode
273-
else
274-
OutOfCoreNode { Id = k; HasMask = hasMask; Load = (fun () -> options.LoadNode k) }
275-
)
242+
// // node properties
243+
// map.Add(kvp Defs.NodeId n.Id)
244+
// map.Add(kvp Defs.CellBounds n.Cell)
245+
// map.Add(kvp Defs.SplitLimitExponent n.SplitLimitExponent)
246+
// map.Add(kvp Defs.ExactBoundingBox n.ExactBoundingBox)
247+
// map.Add(kvp Defs.HasMask (if n.HasMask then 1 else 0))
248+
249+
// // collect subnode IDs
250+
// let ids = n.Nodes |> Array.map (fun n -> n.Id)
251+
// map.Add(kvp Defs.SubnodeIds ids)
252+
253+
// DurableCodec.Serialize(Defs.NodeMerge, map)
254+
255+
//let private decodeQMultiMergeNode(options: SerializationOptions) (def : Durable.Def) (o : obj) : QNodeRef =
256+
// let map = o :?> ImmutableDictionary<Durable.Def, obj>
257+
// let id = map.Get(Defs.NodeId) :?> Guid
258+
// let cell = map.Get(Defs.CellBounds) :?> Cell2d
259+
// let sle = map.Get(Defs.SplitLimitExponent) :?> int
260+
// let ebb = match map.TryGetValue(Defs.ExactBoundingBox) with
261+
// | true, x -> x :?> Box2d
262+
// | false, _ -> Box2d.Invalid
263+
264+
// let hasMask =
265+
// match map.TryGetValue(Defs.HasMask) with
266+
// | true, x -> (x :?> int) <> 0 // 0 means false, everything else is true
267+
// | false, _ -> false
268+
269+
// let nsIds = map.Get(Defs.SubnodeIds) :?> Guid[]
270+
// let ns = nsIds |> Array.map (fun k ->
271+
// if k = Guid.Empty then
272+
// NoNode
273+
// else
274+
// OutOfCoreNode { Id = k; HasMask = hasMask; Load = (fun () -> options.LoadNode k) }
275+
// )
276276

277-
MultiMerge {
278-
Id = id; ExactBoundingBox = ebb; Cell = cell; SplitLimitExponent = sle;
279-
HasMask = hasMask
280-
Nodes = ns
281-
}
277+
// MultiMerge {
278+
// Id = id; ExactBoundingBox = ebb; Cell = cell; SplitLimitExponent = sle;
279+
// HasMask = hasMask
280+
// Nodes = ns
281+
// }
282282

283283
(*
284284
QLinkedNode
@@ -511,7 +511,7 @@ module Serialization =
511511
| InMemoryNode n -> saveBuffer n.Id (fun () -> encodeQNode options n) Array.empty
512512
| InMemoryInner n -> saveBuffer n.Id (fun () -> encodeQInnerNode options n) n.SubNodes
513513
| InMemoryMerge n -> saveBuffer n.Id (fun () -> encodeQMergeNode options n) [| n.First; n.Second |]
514-
| MultiMerge n -> saveBuffer n.Id (fun () -> encodeQMultiMergeNode options n) n.Nodes
514+
//| MultiMerge n -> saveBuffer n.Id (fun () -> encodeQMultiMergeNode options n) n.Nodes
515515
| LinkedNode n -> saveBuffer n.Id (fun () -> encodeQLinkedNode options n) [| n.Target |]
516516

517517
let SaveLayerSet (options: SerializationOptions) (layerSet : LayerSet) : Guid =
@@ -602,8 +602,8 @@ module Serialization =
602602
| InMemoryNode n -> yield n.Id
603603
| InMemoryInner n -> yield n.Id; for x in n.SubNodes do yield! recurse x
604604
| InMemoryMerge n -> yield n.Id; yield! recurse n.First; yield! recurse n.Second
605-
| MultiMerge n -> yield n.Id;
606-
for x in n.Nodes do yield! recurse x
605+
//| MultiMerge n -> yield n.Id;
606+
// for x in n.Nodes do yield! recurse x
607607
| OutOfCoreNode n -> yield! n.Load() |> recurse
608608
| LinkedNode n -> yield n.Id; yield! recurse n.Target
609609

0 commit comments

Comments
 (0)