@@ -47,26 +47,7 @@ iTriangle is a high-performance 2D polygon triangulation library for Rust. It so
4747
4848## Architecture Overview
4949
50- <img src =" readme/architecture.png " width =" 700 " />
51-
52- <details >
53- <summary >Mermaid source</summary >
54-
55- ``` mermaid
56- flowchart TD
57- A[Input contours] --> B[Normalize and fix self-intersections]
58- B --> C[Sweep-line triangulation]
59- C --> D[Raw triangulation]
60- D -->|Delaunay| E[Delaunay triangulation]
61- D --> I[Triangles and indices]
62- E -->|Tessellation| F[Adaptive refinement]
63- F --> E
64- E --> G[Convex decomposition]
65- E --> H[Centroid net]
66- E --> I
67- ```
68-
69- </details >
50+ <img src =" readme/architecture.svg " width =" 700 " />
7051
7152## Quick Start
7253
@@ -93,6 +74,29 @@ let triangulation = vec![contour].triangulate().to_triangulation::<u16>();
9374println! (" triangles: {}" , triangulation . indices. len () / 3 );
9475```
9576
77+ By default, float input is converted to the robust integer core using ` i32 `
78+ coordinates. If your geometry needs a different integer precision, choose it
79+ explicitly:
80+
81+ ``` rust
82+ use i_triangle :: float :: triangulatable :: Triangulatable ;
83+ use i_triangle :: float :: triangulator :: Triangulator ;
84+
85+ let shape = vec! [vec! [
86+ [0.0 , 0.0 ],
87+ [10.0 , 0.0 ],
88+ [10.0 , 10.0 ],
89+ [0.0 , 10.0 ],
90+ ]];
91+
92+ // One-shot triangulation with i64 integer coordinates.
93+ let mesh = shape . triangulate_as :: <i64 >(). to_triangulation :: <u32 >();
94+
95+ // Reusable triangulator: first generic is index type, second is coordinate type.
96+ let mut triangulator = Triangulator :: <u32 , i64 >:: default ();
97+ let mesh = triangulator . triangulate (& shape );
98+ ```
99+
96100## Documentation
97101
98102- [ Docs.rs] ( https://docs.rs/i_triangle )
@@ -192,6 +196,7 @@ let contours = vec![
192196 vec! [[5.0 , 0.0 ], [9.0 , 0.0 ], [9.0 , 4.0 ], [5.0 , 4.0 ]],
193197];
194198
199+ // Uses u32 triangle indices and the default i32 integer coordinate solver.
195200let mut triangulator = Triangulator :: <u32 >:: default ();
196201
197202// Enable Delaunay refinement
@@ -256,8 +261,8 @@ let contours = vec![
256261 ],
257262];
258263
259- let mut triangulator = IntTriangulator :: <u32 >:: default ();
260- let mut output = IntTriangulation :: <u32 >:: default ();
264+ let mut triangulator = IntTriangulator :: <i32 , u32 >:: default ();
265+ let mut output = IntTriangulation :: <i32 , u32 >:: default ();
261266
262267for contour in & contours {
263268 triangulator . triangulate_contour_into (contour . clone (), & mut output );
0 commit comments