discontinuedPackage jet_cad_floor_plan has been discontinued and replaced by jet_cad_2d_plan.

lobes function

List<(List<Vector2>, List<int>)> lobes(
  1. List<Vector2> v,
  2. List<int> e
)

Splits a closed ring at exactly repeated vertices into lobes, each with its edge labels (spec 07 D5.5). Exact: a stored-value comparison.

Implementation

List<(List<Vector2>, List<int>)> lobes(List<Vector2> v, List<int> e) {
  for (var a = 0; a < v.length; a++) {
    for (var b = a + 1; b < v.length; b++) {
      if (_same(v[a], v[b])) {
        return [
          ...lobes(v.sublist(a, b), e.sublist(a, b)),
          ...lobes([...v.sublist(b), ...v.sublist(0, a)],
              [...e.sublist(b), ...e.sublist(0, a)]),
        ];
      }
    }
  }
  return [(v, e)];
}