#![cfg_attr(not(test), no_std)]
#[cfg(test)]
use std as core;
extern crate num_traits;
pub mod steps;
pub mod octant;
mod bresenham;
mod midpoint;
mod xiaolin_wu;
mod grid_walking;
mod fuzzing;
mod bresenham_3d;
mod walk_voxels;
mod bresenham_circle;
pub use bresenham::*;
pub use midpoint::*;
pub use xiaolin_wu::*;
pub use grid_walking::*;
pub use bresenham_3d::*;
pub use walk_voxels::*;
pub use bresenham_circle::*;
use num_traits::{Float, NumAssignOps, NumCast, Signed};
pub type Point<T> = (T, T);
pub type Voxel<T> = (T, T, T);
pub trait FloatNum: Float + NumAssignOps {
#[inline]
fn cast<T: NumCast>(value: T) -> Self {
NumCast::from(value).unwrap()
}
}
impl<T: Float + NumAssignOps> FloatNum for T {}
pub trait SignedNum: Signed + Ord + Copy + NumCast + NumAssignOps {
#[inline]
fn cast<T: NumCast>(value: T) -> Self {
NumCast::from(value).unwrap()
}
}
impl<T: Signed + Ord + Copy + NumCast + NumAssignOps> SignedNum for T {}