MCPcopy Create free account
hub / github.com/NodeDB-Lab/nodedb / choose_best_split_leaf

Function choose_best_split_leaf

nodedb-spatial/src/rtree/split.rs:162–182  ·  view source on GitHub ↗
(entries: &[RTreeEntry], min_fill: usize)

Source from the content-addressed store, hash-verified

160}
161
162fn choose_best_split_leaf(entries: &[RTreeEntry], min_fill: usize) -> usize {
163 let mut best_k = min_fill;
164 let mut best_overlap = f64::INFINITY;
165 let mut best_area = f64::INFINITY;
166 for k in min_fill..=(entries.len() - min_fill) {
167 let left = entries[..k]
168 .iter()
169 .fold(entries[0].bbox, |a, e| a.union(&e.bbox));
170 let right = entries[k..]
171 .iter()
172 .fold(entries[k].bbox, |a, e| a.union(&e.bbox));
173 let overlap = left.overlap_area(&right);
174 let area = left.area() + right.area();
175 if overlap < best_overlap || (overlap == best_overlap && area < best_area) {
176 best_overlap = overlap;
177 best_area = area;
178 best_k = k;
179 }
180 }
181 best_k
182}
183
184fn choose_best_split_internal(children: &[ChildRef], min_fill: usize) -> usize {
185 let mut best_k = min_fill;

Callers 1

split_leaf_entriesFunction · 0.85

Calls 6

foldMethod · 0.80
overlap_areaMethod · 0.80
areaMethod · 0.80
lenMethod · 0.45
iterMethod · 0.45
unionMethod · 0.45

Tested by

no test coverage detected