library: shape: add Shape trait definition
This commit is contained in:
parent
6aaf927823
commit
924f6bcc3c
|
@ -0,0 +1,13 @@
|
||||||
|
use super::{Point, Point2D, Vector};
|
||||||
|
use bvh::aabb::Bounded;
|
||||||
|
use bvh::ray::Ray;
|
||||||
|
|
||||||
|
/// Represent an abstract shape inside the scene.
|
||||||
|
pub trait Shape: Bounded + std::fmt::Debug {
|
||||||
|
/// Return the distance at which the object intersects with the ray, or None if it does not.
|
||||||
|
fn intersect(&self, ray: &Ray) -> Option<f64>;
|
||||||
|
/// Return the unit vector corresponding to the normal at this point of the shape.
|
||||||
|
fn normal(&self, point: &Point) -> Vector;
|
||||||
|
/// Project the point from the shape's surface to its texel coordinates.
|
||||||
|
fn project_texel(&self, point: &Point) -> Point2D;
|
||||||
|
}
|
Loading…
Reference in a new issue