Expanded U-shape: 8 vertices Β· 4 stored v0 v2 v4 v6 β large: stored even-index vertex β small: implicit odd-index vertex
graph LR R["Rectangle"] --> R2["2 stored points"] M["Monotone / L"] --> M3["3 stored points"] style R fill:#c8e6c9,stroke:#2e7d32,stroke-width:3px style R2 fill:#e3f2fd,stroke:#1565c0,stroke-width:3px style M fill:#ffe0b2,stroke:#ef6c00,stroke-width:3px style M3 fill:#e3f2fd,stroke:#1565c0,stroke-width:3px
graph LR A["(0,0)"] -->|"stored"| B["(3,3)"] A --> C["(3,0)"] C --> B style A fill:#e3f2fd,stroke:#1565c0,stroke-width:3px style B fill:#e3f2fd,stroke:#1565c0,stroke-width:3px style C fill:#fff9c4,stroke:#f57f17,stroke-width:3px
Compressed U-shape: 2 pieces Β· total area 7 3 stored points Β· area 4 2 stored points Β· area 3 cut
graph TD S["Rust: stub"] --> I["recursive cut\non compressed points"] I --> C["convex"] I --> E["explicit"] I --> X["implicit\n(still stub)"] style S fill:#f8bbd0,stroke:#c2185b,stroke-width:3px style I fill:#c8e6c9,stroke:#2e7d32,stroke-width:3px style C fill:#e3f2fd,stroke:#1565c0,stroke-width:3px style E fill:#e3f2fd,stroke:#1565c0,stroke-width:3px style X fill:#eeeeee,stroke:#616161,stroke-width:3px
C++ compressed 7 cases Β· 90 asserts C++ full 141 cases Β· 816 asserts Python 627 pass Β· 1 unrelated Rust 378 tests pass
graph LR L1["Representation"] --> L2["Input contract"] L2 --> L3["Algorithm"] L3 --> L4["Tests"] style L1 fill:#e3f2fd,stroke:#1565c0,stroke-width:3px style L2 fill:#fff9c4,stroke:#f57f17,stroke-width:3px style L3 fill:#c8e6c9,stroke:#2e7d32,stroke-width:3px style L4 fill:#d1c4e9,stroke:#5e35b1,stroke-width:3px