diff options
| author | Sadeep Madurange <sadeep@asciimx.com> | 2026-07-25 16:48:16 +0800 |
|---|---|---|
| committer | Sadeep Madurange <sadeep@asciimx.com> | 2026-08-13 22:51:43 +0800 |
| commit | 10316f4c8259c65edf49462bc0e2a76011577e1c (patch) | |
| tree | ee3e0e51d452326ae733520393900ff8abba0a27 /_log/2d-geometry-kernel.md | |
| parent | 61568cd8d254b794188352354902acd85bdc4739 (diff) | |
| download | www-10316f4c8259c65edf49462bc0e2a76011577e1c.tar.gz | |
Add reference to Domsson's fakesteak and minor tweaks to articles.minimalist
Diffstat (limited to '_log/2d-geometry-kernel.md')
| -rw-r--r-- | _log/2d-geometry-kernel.md | 27 |
1 files changed, 11 insertions, 16 deletions
diff --git a/_log/2d-geometry-kernel.md b/_log/2d-geometry-kernel.md index 5275ad8..2fc685a 100644 --- a/_log/2d-geometry-kernel.md +++ b/_log/2d-geometry-kernel.md @@ -6,29 +6,24 @@ layout: post Written in 2026, backdated to 2022. -Joined real estate firm mid-migration from C# to Java. Lacking a geometry -kernel, the project had stalled. - +Real estate firm decided to rewrite the building design system from C# to Java. Building geometries are small—mostly 2D. No frame budgets or low-latency constraints. Numerical parity with Rhino was mandatory. Architects and -structural engineers supplied test cases and tolerances. +structural engineers supplied test cases and floating-point tolerances. Implemented polygon clipping with Sutherland–Hodgman. No drama. Fortune's algorithm was a missed opportunity. Implemented the beach line using -a linear list instead of the balanced binary tree. Planned to return to this. -Never had the chance. +a linear list instead of the balanced binary tree. Planned to return to this; +never had the chance. Z and H-shaped floor plan offsets produced self-intersections that even Rhino -mishandled. Couldn't implement straight skeletons under time pressure. Wrote a -custom solver that fixed invalid loops by backtracking instead. - -Problem of finding the largest inscribed rectangle surprised me. No single -algorithm covered both convex and concave shapes. Brute-force grid search -yielded 12% more buildable area—but not the true optimum. - -Java BSP library produced results numerically incompatible with Rhino's. -Replaced BSP trees with vector-based primitives and JBLAS. +mishandled. Could not get straight skeletons working under time pressure. Wrote +a custom solver that fixed invalid loops by backtracking instead. -Migration resumed. +Problem of finding the largest inscribed rectangle was surprisingly difficult. +No single algorithm covered both convex and concave shapes. Brute-force grid +search yielded 12% more buildable area—but not the true optimum. +Java BSP library proved numerically incompatible with Rhino. Replaced BSP trees +with vector-based primitives and JBLAS instead. |
