From afdf6562b5a72823eacbec4dd415fb3da698bed7 Mon Sep 17 00:00:00 2001 From: Florian Amsallem Date: Sun, 29 Jan 2023 22:16:31 +0100 Subject: [PATCH] bump version to 1.2.0 --- Cargo.toml | 2 +- README.md | 38 ++++++++++++++++++++++++++++++++++++-- src/lib.rs | 2 +- 3 files changed, 38 insertions(+), 4 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index a46b4bb..e8c45ba 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "kdtree-ray" -version = "1.1.0" +version = "1.2.0" authors = ["Florian Amsallem "] description = "Fast Kdtree implementation for raytracer" documentation = "https://docs.rs/kdtree-ray" diff --git a/README.md b/README.md index ddf5d7d..f209d5f 100644 --- a/README.md +++ b/README.md @@ -27,11 +27,45 @@ To install it, just add the dependency in your `Cargo.toml`. ```toml [dependencies] -kdtree-ray="1.1.0" +kdtree-ray="1.2.0" ``` ### Usage -Examples of use: +```rust +use cgmath::*; +use kdtree_ray::{AABB, Bounded, KDTree}; + +struct Triangle(Vector3, Vector3, Vector3); + +// To use the KDTree on an object you need first to implement the BoundingBox trait. +impl Bounded for Triangle { + fn bound(&self) -> AABB { + let min = Vector3::new( + self.0.x.min(self.1.x).min(self.2.x), + self.0.y.min(self.1.y).min(self.2.y), + self.0.z.min(self.1.z).min(self.2.z), + ); + let max = Vector3::new( + self.0.x.max(self.1.x).max(self.2.x), + self.0.y.max(self.1.y).max(self.2.y), + self.0.z.max(self.1.z).max(self.2.z), + ); + AABB::new(min, max) + } +} + +// Kdtree creation +let triangle = Triangle(Vector3::zero(), Vector3::zero(), Vector3::zero()); +let triangles: Vec = vec![triangle, /* ... */]; +let kdtree = KDTree::build(&triangles); + +// Get a reduced list of triangles that a ray could intersect +let ray_origin = Vector3::zero(); +let ray_direction = Vector3::new(1., 0., 0.); +let candidates_triangles = kdtree.intersect(&ray_origin, &ray_direction); +``` + +Examples of projects using this crate: - [Path Tracer](https://github.com/flomonster/path-tracer) diff --git a/src/lib.rs b/src/lib.rs index 9708d01..b59f5ba 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -10,7 +10,7 @@ //! //! ```toml //! [dependencies] -//! kdtree-ray="1.1.0" +//! kdtree-ray="1.2.0" //! ``` //! //! # Usage & Tips