From 3ef9a65131ead0db44f8e1ffc3b3066fdd955557 Mon Sep 17 00:00:00 2001 From: Doc Date: Sun, 21 Sep 2025 12:50:16 +0200 Subject: [PATCH] implemented bsp metrics --- internal/bsp/metrics.go | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 internal/bsp/metrics.go diff --git a/internal/bsp/metrics.go b/internal/bsp/metrics.go new file mode 100644 index 0000000..33daf0e --- /dev/null +++ b/internal/bsp/metrics.go @@ -0,0 +1,31 @@ +package bsp + +type Stats struct { + Nodes int + Leaves int + MaxDepth int + TotalSegs int // Summe Segmente in Leaves (nach Splits) +} + +func Measure(n *Node) Stats { + var st Stats + var rec func(*Node, int) + rec = func(x *Node, d int) { + if x == nil { + return + } + if d > st.MaxDepth { + st.MaxDepth = d + } + if x.Leaf != nil { + st.Leaves++ + st.TotalSegs += len(x.Leaf.Segs) + return + } + st.Nodes++ + rec(x.Left, d+1) + rec(x.Right, d+1) + } + rec(n, 0) + return st +}