--- title: Geometry kernel for building design date: 2022-07-31 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. 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. 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. 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. Migration resumed.