Struct rustic_zen::scene::Segment
source · pub struct Segment<R: Rng> { /* private fields */ }
Expand description
Segments represent boundries in space for light rays to interact with.
These are the primitive type that scenes are constructed from in rustic zen, and can be in the form of straight lines or 2nd order Bezier curves.
To create dynamic and interesting scenes segments are not constructed from static
points, but instead SamplerPoint
s, which are a wrapper around two of rustic zen’s Sampler
objects. (one for x and one for y).
As SamplerPoint
s do not have a constructor, construction is indirect via a tuple of Sampler
s.
§Example:
use rustic_zen::prelude::*;
let m = material::hqz_legacy_default();
// Construct SamplerPoints in place from a tuple of Samplers.
let l =Segment::line_from_points(
(Sampler::new_const(0.0),Sampler::new_const(0.0)),
(Sampler::new_const(10.0),Sampler::new_const(10.0)),
m.clone()
);
// Samplers also support being constructed in place though so this can be simplified to
let l2 = Segment::line_from_points((0.0,0.0), (10.0, 10.0), m);
// You'll likely get compaints about missing type "R" if you don't add
// your Segments to the scene. Adding them constrains R.
let _ = Scene::new(100, 100).with_object(l).with_object(l2);
Implementations§
source§impl<R> Segment<R>where
R: Rng,
impl<R> Segment<R>where
R: Rng,
sourcepub fn line_from_points<A, B>(start: A, end: B, material: Material<R>) -> Self
pub fn line_from_points<A, B>(start: A, end: B, material: Material<R>) -> Self
Constructs a line from the given points and material.
sourcepub fn curve_from_points<A, B, C>(
start: A,
mid: B,
end: C,
material: Material<R>
) -> Self
pub fn curve_from_points<A, B, C>( start: A, mid: B, end: C, material: Material<R> ) -> Self
Constructs a Bezier curve from the given points, and material.
Note: mid
is the control point of the Bezier curve, the resulting path is not
guarenteed to pass though this point.
Auto Trait Implementations§
impl<R> Freeze for Segment<R>
impl<R> !RefUnwindSafe for Segment<R>
impl<R> Send for Segment<R>
impl<R> Sync for Segment<R>
impl<R> Unpin for Segment<R>
impl<R> !UnwindSafe for Segment<R>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more