pub struct Ray { /* private fields */ }Expand description
A single ray to be traced through an optical system.
§Attributes
- pos: Position of the ray
- dir: Direction of the ray (direction cosines)
Implementations§
Source§impl Ray
impl Ray
pub fn new(pos: Vec3, dir: Vec3, field_id: usize) -> Result<Self>
Sourcepub fn intersect(&self, surf: &Surface, max_iter: usize) -> Result<(Vec3, Vec3)>
pub fn intersect(&self, surf: &Surface, max_iter: usize) -> Result<(Vec3, Vec3)>
Finds the intersection point of a ray with a surface and the surface normal at that point.
If no intersection is found, then this function returns an error.
§Arguments
- surf: Surface to intersect with
- max_iter: Maximum number of iterations for the Newton-Raphson method
pub fn redirect(&mut self, step: &Step<'_>, norm: Vec3)
Sourcepub fn transform(&mut self, surf: &Surface)
pub fn transform(&mut self, surf: &Surface)
Transform a ray into the local coordinate system of a surface from the global system.
Sourcepub fn i_transform(&mut self, surf: &Surface)
pub fn i_transform(&mut self, surf: &Surface)
Transform a ray from the local coordinate system of a surface into the global system.
pub fn terminate(&mut self)
pub fn is_terminated(&self) -> bool
Sourcepub fn fan(
n: usize,
r: f64,
theta: f64,
z: f64,
phi: f64,
radial_offset_x: f64,
radial_offset_y: f64,
field_id: usize,
) -> Vec<Ray>
pub fn fan( n: usize, r: f64, theta: f64, z: f64, phi: f64, radial_offset_x: f64, radial_offset_y: f64, field_id: usize, ) -> Vec<Ray>
Create a fan of uniformly spaced rays in a given z-plane at an angle phi to the z-axis.
The vectors have endpoints at an angle theta with respect to the x-axis and extend from distances -r to r from the point (0, 0, z). The rays are at an angle phi from the z-axis.
§Arguments
- n: Number of vectors to create
- r: Radial span of vector endpoints from [-r, r]
- theta: Angle of vectors with respect to x, radians
- z: z-coordinate of endpoints
- phi: Angle of vectors with respect to z, the optics axis, radians
- radial_offset_x: Offset the radial position of the vectors by this amount in x
- radial_offset_y: Offset the radial position of the vectors by this amount in y
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Ray
impl<'de> Deserialize<'de> for Ray
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations§
impl Freeze for Ray
impl RefUnwindSafe for Ray
impl Send for Ray
impl Sync for Ray
impl Unpin for Ray
impl UnwindSafe for Ray
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