Skip to content

Exact curved inset, repeated tool instances, arc-arc caps and near-linear planar subtracts - #47

Merged
aka-blackboots merged 5 commits into
mainfrom
integration/multi-floor-buildings
Nov 4, 2026
Merged

aka-blackboots merged 5 commits into
mainfrom
integration/multi-floor-buildings

Conversation

@aka-blackboots

Copy link
Copy Markdown
Contributor

What changes

  • Exact curved inset in TypeScript. OpenGeometry.insetCurvedRegion2D(region, distance) insets a closed line-and-arc region through the kernel's exact curved inset.
  • Repeated tool instances. Each repeated tool instance in one operate call gets its own face keys. A tool listed twice is refused.
  • Planar caps at an arc-arc tangent. The collinear ear at an arc-arc tangent is flipped out of a planar cap, so the cap no longer folds.
  • Large planar subtracts. A halfspace subtract on a large planar body is near-linear: the host is validated once, each body keeps one classifier with cached bounds, and only box-near pairs are compared, with a fallback to every pair when the margin is unbounded or the pair count passes a budget. The by-handle check is O(1): the binding caches the body type per shape and a verified handle-to-id map. Results are unchanged. A plate with 300 holes cuts in a section in 4.4 s (was 13 s).

main is merged in (#44, #45, #46). Two conflicts, both kept from each side: query/mod.rs (Classifier and FaceTrim) and geom2d/tests/boolean2d.rs (the box-index, wide-cutter and near-collinear mitre tests).

Checks on the merged branch

Check Result
npm run build passes
npm test (cargo) 803 passed, 0 failed, 1 ignored
npm --prefix main run test:node 215 of 215
npm run check 17 of 18 steps pass. test:performance failed once under a load average of 58; run alone it passes 3 of 3 (slider boolean about 4.1 ms against a 12.0 ms budget, slider tessellation about 1.5 ms against 1.8 ms).

A public static for a closed line-and-arc region, insetting through the
kernel's exact curved inset. Declared API diff: + static
insetCurvedRegion2D(region: CurvedRegion2D, distance: number): CurvedRegion2D[];
The open line-and-arc path offset is left for its own issue.
… by-handle check O(1)

A planar subtract validated its host on every classify call and compared every
edge, ring, vertex and face with every other. It now validates once, keeps one
cached-bounds classifier per body, and visits only box-near pairs in the
original order, falling back to every pair when the margin is unbounded or the
pair count passes a budget. The binding caches body type per shape and a
verified handle to ogId map. Results are unchanged; the 300-hole perforated
plate's section draws in 4.4 s (was 13 s).
Brings #44 (shallow crossings in planar region booleans), #45 (display bounds per graph revision) and #46 (faster curved subtracts, release idle display geometry). Conflicts: query/mod.rs keeps Classifier and FaceTrim; geom2d/tests/boolean2d.rs keeps the nearby_boxes, wide-cutter and near-collinear mitre tests.
@aka-blackboots
aka-blackboots merged commit f7a1008 into main Nov 4, 2026
0 of 4 checks passed
@aka-blackboots
aka-blackboots deleted the integration/multi-floor-buildings branch November 4, 2026 12:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant