summaryrefslogtreecommitdiffstats
path: root/_log/2d-geometry-kernel.md
diff options
context:
space:
mode:
authorSadeep Madurange <sadeep@asciimx.com>2026-08-19 05:58:52 +0800
committerSadeep Madurange <sadeep@asciimx.com>2026-08-20 21:15:55 +0800
commitbc9565609d004ad69636231de195a0197bebff27 (patch)
treee16f57f74e9d7c5cb0ee3c09bb39bf2ba47d1bde /_log/2d-geometry-kernel.md
parentdc7e172579402b0ec8319efd8bb5bbe708302700 (diff)
downloadwww-bc9565609d004ad69636231de195a0197bebff27.tar.gz
Minor update.
Diffstat (limited to '_log/2d-geometry-kernel.md')
-rw-r--r--_log/2d-geometry-kernel.md25
1 files changed, 13 insertions, 12 deletions
diff --git a/_log/2d-geometry-kernel.md b/_log/2d-geometry-kernel.md
index e6c67e2..e3594f0 100644
--- a/_log/2d-geometry-kernel.md
+++ b/_log/2d-geometry-kernel.md
@@ -6,10 +6,10 @@ layout: post
Written in 2026, backdated to 2022.
-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 floating-point tolerances.
+Firm decided to rewrite the building design system from C# to Java. Geometries
+are small—mostly 2D. No frame budgets. Numerical parity with Rhino was
+mandatory. Architects, structural engineers supplied test cases and
+floating-point tolerances.
Implemented polygon clipping with Sutherland–Hodgman. No drama.
@@ -17,13 +17,14 @@ 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.
-Z and H-shaped floor plan offsets produced self-intersections that even Rhino
-mishandled. Could not get straight skeletons working under time pressure. Wrote
-a custom solver that fixed invalid loops by backtracking instead.
+Couldn't get straight skeletons working. Even Rhino mishandled
+self-intersections Z and H-shaped floor plan offsets produced. Wrote a custom
+solver that fixed invalid loops by backtracking.
-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.
+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.
+
+BSP library proved numerically incompatible with Rhino. Replaced BSP trees with
+vector-based primitives and JBLAS instead. All tests passed.
-Java BSP library proved numerically incompatible with Rhino. Replaced BSP trees
-with vector-based primitives and JBLAS instead.