def tree.uniform
gralha-coverage@0.1.0.1 · cover.bend:100
import gralha-coverage@0.1.0.1/cover.bend as Cover
import Base
import gralha-text-scan@0.1.0.1/scan.bend as U
100def tree.uniform(t: CovTree, +nx: U32, +ny: U32, +size: U32, +x0: U32, +y0: U32, +x1: U32, +y1: U32, +acc: F32) -> F32:
101 match t:
102 case CovFlat{v}: U.choose(F32, tree.overlaps(nx, ny, size, x0, y0, x1, y1), tree.same.as(acc, v), acc)
103 case CovQuad{a, b, c, d}:
104 +half = U32.div(size, 2)
105 U.branch(F32, Bool.not(tree.overlaps(nx, ny, size, x0, y0, x1, y1)) || F32.is_lt(acc, F32.neg(0.5)), _ => acc,
106 _ => tree.uniform(d, (nx + half : U32), (ny + half : U32), half, x0, y0, x1, y1,
107 tree.uniform(c, nx, (ny + half : U32), half, x0, y0, x1, y1,
108 tree.uniform(b, (nx + half : U32), ny, half, x0, y0, x1, y1,
109 tree.uniform(a, nx, ny, half, x0, y0, x1, y1, acc)))))