phys-raycast 2.0.0

Ray casting functionality for 3D physics shapes
Documentation
// Copyright (C) 2020-2025 phys-raycast authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

//! # Phys Raycast Library
//!
//! A lightweight ray casting library for 3D physics shapes built on top of the phys-geom library.
//!
//! This library provides ray casting functionality for basic geometric shapes commonly used in
//! physics simulations. It's designed to be minimal and focused, depending only on the core
//! geometry library without requiring the full collision detection system.
//!
//! ## Features
//!
//! - **Basic Shapes**: Ray casting support for sphere, cuboid, capsule, cylinder, triangle, and
//!   infinite plane
//! - **Minimal Dependencies**: Only depends on phys-geom for geometry types
//! - **Simple API**: Clean and intuitive ray casting interface
//! - **Type Safe**: Leverages Rust's type system for safe geometric operations
//!
//! ## Usage
//!
//! ```rust
//! use phys_raycast::{Raycast, RaycastHitResult};
//! use phys_geom::{Ray, shape::Sphere, math::{Point3, Vec3}};
//!
//! let sphere = Sphere::new(1.0);
//! let ray = Ray::new(Point3::new(-2.0, 0.0, 0.0), Vec3::x_axis());
//!
//! if let Some(hit) = sphere.raycast(ray, 10.0, false) {
//!     println!("Hit at distance: {}, normal: {:?}", hit.distance, hit.normal);
//! }
//! ```

pub extern crate phys_geom as geom;
mod shapes;
mod traits;

// Re-export commonly used types
pub use geom::math::Real;
pub use geom::Ray;
pub use traits::{Raycast, RaycastHitResult};