Module geometry

Module geometry 

Source
Expand description

Geometric utility functions for convex hull computations

This module provides geometric calculations needed for convex hull algorithms, organized by dimensionality for optimal performance and clarity.

§Module Organization

  • calculations_2d - 2D geometric calculations (cross products, areas, perimeters)
  • calculations_3d - 3D geometric calculations (volumes, surface areas, vector operations)
  • high_dimensional - High-dimensional calculations and approximations

§Examples

§2D Calculations

use scirs2_spatial::convex_hull::geometry::calculations_2d::{cross_product_2d, compute_polygon_area};
use scirs2_core::ndarray::array;

// Check orientation of three points
let p1 = [0.0, 0.0];
let p2 = [1.0, 0.0];
let p3 = [0.0, 1.0];
let cross = cross_product_2d(p1, p2, p3);
assert!(cross > 0.0); // Counterclockwise orientation

// Compute polygon area
let points = array![[0.0, 0.0], [1.0, 0.0], [1.0, 1.0], [0.0, 1.0]];
let vertices = vec![0, 1, 2, 3];
let area = compute_polygon_area(&points.view(), &vertices).unwrap();
assert!((area - 1.0).abs() < 1e-10);

§3D Calculations

use scirs2_spatial::convex_hull::geometry::calculations_3d::{tetrahedron_volume, triangle_area_3d};

// Compute tetrahedron volume
let p0 = [0.0, 0.0, 0.0];
let p1 = [1.0, 0.0, 0.0];
let p2 = [0.0, 1.0, 0.0];
let p3 = [0.0, 0.0, 1.0];
let volume = tetrahedron_volume(p0, p1, p2, p3);
assert!((volume.abs() - 1.0/6.0).abs() < 1e-10);

// Compute triangle area in 3D
let area = triangle_area_3d(p0, p1, p2);
assert!((area - 0.5).abs() < 1e-10);

§High-Dimensional Calculations

use scirs2_spatial::convex_hull::geometry::high_dimensional::{compute_centroid, compute_bounding_box};
use scirs2_core::ndarray::array;

let points = array![
    [0.0, 0.0, 0.0, 0.0],
    [1.0, 0.0, 0.0, 0.0],
    [0.0, 1.0, 0.0, 0.0],
    [0.0, 0.0, 1.0, 0.0]
];
let vertices = vec![0, 1, 2, 3];

let centroid = compute_centroid(&points.view(), &vertices);
let (min_coords, max_coords) = compute_bounding_box(&points.view(), &vertices);

Re-exports§

pub use calculations_2d::compute_2d_hull_equations;
pub use calculations_2d::compute_polygon_area;
pub use calculations_2d::compute_polygon_perimeter;
pub use calculations_2d::cross_product_2d;
pub use calculations_2d::distance_squared_2d;
pub use calculations_2d::is_counterclockwise;
pub use calculations_2d::polar_angle;
pub use calculations_3d::compute_polyhedron_surface_area;
pub use calculations_3d::compute_polyhedron_volume;
pub use calculations_3d::cross_product_3d;
pub use calculations_3d::dot_product_3d;
pub use calculations_3d::normalize_3d;
pub use calculations_3d::tetrahedron_volume;
pub use calculations_3d::triangle_area_3d;
pub use calculations_3d::vector_magnitude_3d;
pub use high_dimensional::compute_bounding_box;
pub use high_dimensional::compute_centroid;
pub use high_dimensional::compute_characteristic_size;
pub use high_dimensional::compute_high_dim_surface_area;
pub use high_dimensional::compute_high_dim_volume;
pub use high_dimensional::estimate_facet_area;

Modules§

calculations_2d
2D geometric calculations for convex hull operations
calculations_3d
3D geometric calculations for convex hull operations
high_dimensional
High-dimensional geometric calculations for convex hull operations