56 lines
1.9 KiB
Rust
56 lines
1.9 KiB
Rust
//! Native Rust tetrahedral mesh generation from labeled medical images.
|
|
//!
|
|
//! This crate provides mesh generation capabilities for finite element analysis,
|
|
//! similar to CGAL but implemented in pure Rust for better integration and
|
|
//! future GPU acceleration.
|
|
//!
|
|
//! # Features
|
|
//!
|
|
//! - **Delaunay Tetrahedralization**: 3D Delaunay triangulation using Bowyer-Watson algorithm
|
|
//! - **Labeled Image Meshing**: Convert segmented medical images to tetrahedral meshes
|
|
//! - **Mesh Quality Metrics**: Radius-edge ratio, dihedral angles, aspect ratio
|
|
//! - **Mesh Optimization**: Laplacian and Lloyd/CVT smoothing
|
|
//!
|
|
//! # Example
|
|
//!
|
|
//! ```ignore
|
|
//! use rtx_mesh_gen::{LabeledDomain, MeshCriteria};
|
|
//!
|
|
//! // Load a labeled NIfTI image
|
|
//! let domain = LabeledDomain::from_nifti("brain_labels.nii.gz", vec![1, 2, 3])?;
|
|
//!
|
|
//! // Set mesh criteria
|
|
//! let criteria = MeshCriteria {
|
|
//! facet_angle: 30.0,
|
|
//! facet_size: 1.0,
|
|
//! cell_radius_edge_ratio: 3.0,
|
|
//! cell_size: 1.0,
|
|
//! };
|
|
//!
|
|
//! // Generate mesh
|
|
//! let mesh = domain.generate_mesh(&criteria)?;
|
|
//! println!("Generated {} tetrahedra", mesh.num_tetrahedra());
|
|
//! ```
|
|
|
|
pub mod delaunay;
|
|
pub mod error;
|
|
pub mod labeled;
|
|
pub mod mesh;
|
|
pub mod quality;
|
|
|
|
// Re-exports for convenience
|
|
pub use delaunay::delaunay_3d;
|
|
pub use error::{MeshGenError, Result};
|
|
pub use labeled::{LabeledDomain, MeshCriteria};
|
|
pub use mesh::{TetrahedralMesh, Tetrahedron, Triangle, Vertex};
|
|
pub use quality::{MeshQuality, QualityMetrics, laplacian_smooth, lloyd_smooth};
|
|
|
|
/// Prelude module for commonly used items.
|
|
pub mod prelude {
|
|
pub use crate::delaunay::delaunay_3d;
|
|
pub use crate::error::{MeshGenError, Result};
|
|
pub use crate::labeled::{LabeledDomain, MeshCriteria};
|
|
pub use crate::mesh::{TetrahedralMesh, Tetrahedron, Triangle, Vertex};
|
|
pub use crate::quality::{MeshQuality, QualityMetrics, laplacian_smooth, lloyd_smooth};
|
|
}
|