@@ -465,29 +465,25 @@ module Layer =
465
465
/// result sample exponent
466
466
let e = sampleSizeRange.Min
467
467
468
-
469
- let mutable i = 0
470
- for l in layersOrdered do
468
+ for i = 0 to layersOrdered.Length -1 do
469
+
470
+ let l = layersOrdered[ i ]
471
471
472
472
if verbose then
473
473
printfn " [Layer.flattenTyped] | layersOrdered[%d ] : e=%d origin=%A size=%A " i l.SampleExponent l.SampleWindow.Min l.SampleWindow.Size
474
474
475
475
if l.SampleExponent <> e then
476
- let resampledLayer = ( l :> ILayer) .Resample e
477
- failwith " TODO"
478
-
479
- i <- i + 1
476
+ let resampledLayer = l.Resample e
477
+ layersOrdered[ i] <- resampledLayer
480
478
481
- failwith " TODO"
482
-
483
- let finalWindow = layers |> Seq.map ( fun l -> l.SampleWindow) |> Box2l
479
+ let finalWindow = layersOrdered |> Seq.map ( fun l -> l.SampleWindow) |> Box2l
484
480
let finalOrigin = Cell2d( finalWindow.Min, e)
485
481
let finalMapping = DataMapping( finalOrigin, V2i finalWindow.Size, finalWindow)
486
482
let finalData = Array.zeroCreate< 'a> ( int finalWindow.Size.X * int finalWindow.Size.Y)
487
483
let finalMask = Array.create< byte> ( int finalWindow.Size.X * int finalWindow.Size.Y) 255 uy
488
484
489
485
if verbose then
490
- for l in layers do printfn " [Layer.flattenTyped] .... [%A -%A ]" l.SampleMin l.SampleMaxIncl
486
+ for l in layersOrdered do printfn " [Layer.flattenTyped] .... [%A -%A ]" l.SampleMin l.SampleMaxIncl
491
487
printfn " [Layer.flattenTyped] .... final mapping"
492
488
printfn " [Layer.flattenTyped] .... buffer origin: %A " finalOrigin
493
489
printfn " [Layer.flattenTyped] .... buffer size : %A " finalWindow.Size
@@ -498,7 +494,7 @@ module Layer =
498
494
let debugCollisionSamples = HashSet< int>()
499
495
500
496
let mutable layerIndex = 0 uy
501
- for layer in layers do
497
+ for layer in layersOrdered do
502
498
let w = layer.Mapping.Window
503
499
let xMaxIncl = int w.SizeX - 1
504
500
let yMaxIncl = int w.SizeY - 1
@@ -526,8 +522,8 @@ module Layer =
526
522
debugCollisionSamples.Add( i) |> ignore
527
523
debugCountCollisions <- debugCountCollisions + 1
528
524
529
- if verbose then
530
- printfn " [DEBUG] [Layer.flattenTyped] COLLISION overwriting value %A from layer %d with value %A from layer %d " finalData[ i] finalMask[ i] v layerIndex
525
+ // if verbose then
526
+ // printfn "[Layer.flattenTyped] COLLISION overwriting value %A from layer %d with value %A from layer %d" finalData[i] finalMask[i] v layerIndex
531
527
532
528
else
533
529
()
@@ -542,17 +538,16 @@ module Layer =
542
538
let coundOccupiedSamples = finalMask |> Array.sumBy ( fun x -> if x = 255 uy then 1 else 0 )
543
539
544
540
if verbose && debugCountCollisions > 0 then
545
- printfn " [DEBUG][Layer.flattenTyped] debugCountValues = %d " debugCountValues
546
- printfn " [DEBUG][Layer.flattenTyped] debugCountCollisions = %d " debugCountCollisions
547
- printfn " [DEBUG][Layer.flattenTyped] debugCollisionSamples.Count = %d " debugCollisionSamples.Count
548
- printfn " [DEBUG][Layer.flattenTyped] debugCountOccupied.Count = %d / %d ... %5.2f " coundOccupiedSamples finalMask.Length ( float coundOccupiedSamples / float finalMask.Length)
549
-
550
- // rewrite mask (1 ... occupied, 0 ... undefined)
541
+ printfn " [Layer.flattenTyped] debugCountValues = %d " debugCountValues
542
+ printfn " [Layer.flattenTyped] debugCountCollisions = %d " debugCountCollisions
543
+ printfn " [Layer.flattenTyped] debugCollisionSamples.Count = %d " debugCollisionSamples.Count
544
+ printfn " [Layer.flattenTyped] debugCountOccupied.Count = %d / %d ... %5.2f " coundOccupiedSamples finalMask.Length ( float coundOccupiedSamples / float finalMask.Length)
551
545
552
546
let countOccupied = finalMask |> Array.filter ( fun x -> x <> 255 uy) |> Array.length
553
547
let countUndefined = finalMask |> Array.filter ( fun x -> x = 255 uy) |> Array.length
554
- printfn " [OCCUPANCY][e = %d ][%A ][%A ] countOccupied = %d , countUndefined = %d " e finalWindow finalWindow.Size countOccupied countUndefined
555
-
548
+ printfn " [Layer.flattenTyped][OCCUPANCY][e = %d ][%A ][%A ] countOccupied = %d , countUndefined = %d " e finalWindow finalWindow.Size countOccupied countUndefined
549
+
550
+ // rewrite mask (1 ... occupied, 0 ... undefined)
556
551
for i = 0 to finalMask.Length-1 do
557
552
finalMask[ i] <- if finalMask[ i] = 255 uy then 0 uy else 1 uy
558
553
0 commit comments