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)))))

Uses (13)

Used by (1)