pub struct SphericalLEDArm {Show 13 fields
pub commanded_angles: Vec<(f64, f64)>,
pub arm_length: f64,
pub pivot_offset: (f64, f64, f64),
pub orientation_radians: (f64, f64, f64),
pub theta_zero_radians: f64,
pub phi_zero_radians: f64,
pub theta_scale: f64,
pub phi_scale: f64,
pub elevation_axis_tilt_radians: f64,
pub theta_backlash_radians: f64,
pub phi_backlash_radians: f64,
pub wavelength_override: Option<f64>,
pub intensity_weights: Option<Vec<f64>>,
}Expand description
A single LED moved over a spherical trajectory by an azimuth/elevation arm.
commanded_angles are (theta, phi) encoder commands in acquisition order.
The kinematic model includes encoder affine errors, direction-dependent
backlash, inner-axis non-orthogonality, arm-pivot displacement, and a rigid
mount rotation. Azimuth commands should be unwrapped when crossing +-pi so
that backlash direction is unambiguous.
Fields§
§commanded_angles: Vec<(f64, f64)>§arm_length: f64§pivot_offset: (f64, f64, f64)Arm-pivot displacement (x, y, z) from the sample, in metres.
orientation_radians: (f64, f64, f64)Rigid mount rotation (rx, ry, rz) in radians.
theta_zero_radians: f64§phi_zero_radians: f64§theta_scale: f64§phi_scale: f64§elevation_axis_tilt_radians: f64Tilt of the elevation axis toward the azimuth axis, in radians.
theta_backlash_radians: f64Total separation between increasing and decreasing encoder branches.
phi_backlash_radians: f64Total separation between increasing and decreasing encoder branches.
wavelength_override: Option<f64>§intensity_weights: Option<Vec<f64>>Implementations§
Source§impl SphericalLEDArm
impl SphericalLEDArm
pub fn new(commanded_angles: Vec<(f64, f64)>, arm_length: f64) -> Self
pub fn pivot_offset(self, offset: (f64, f64, f64)) -> Self
pub fn orientation_deg(self, degrees: (f64, f64, f64)) -> Self
pub fn encoder_zero_deg(self, theta: f64, phi: f64) -> Self
pub fn encoder_scale(self, theta: f64, phi: f64) -> Self
pub fn elevation_axis_tilt_deg(self, degrees: f64) -> Self
pub fn backlash_deg(self, theta: f64, phi: f64) -> Self
pub fn wavelength_override(self, wavelength: f64) -> Self
pub fn intensity_weights(self, weights: Vec<f64>) -> Self
pub fn validate(&self) -> Result<()>
Trait Implementations§
Source§impl Clone for SphericalLEDArm
impl Clone for SphericalLEDArm
Source§fn clone(&self) -> SphericalLEDArm
fn clone(&self) -> SphericalLEDArm
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for SphericalLEDArm
impl Debug for SphericalLEDArm
Source§impl<'de> Deserialize<'de> for SphericalLEDArm
impl<'de> Deserialize<'de> for SphericalLEDArm
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
Source§impl IlluminationSource for SphericalLEDArm
impl IlluminationSource for SphericalLEDArm
fn k_vectors(&self, optics: &Optics) -> Result<Vec<KVector>>
Source§fn frame_gains(&self) -> Result<Option<Vec<f64>>>
fn frame_gains(&self) -> Result<Option<Vec<f64>>>
Optional multiplicative intensity gain for each compiled frame.
Source§fn multiplexing_matrix(&self) -> Result<Option<MultiplexingMatrix>>
fn multiplexing_matrix(&self) -> Result<Option<MultiplexingMatrix>>
Optional incoherent source weights for each measured frame.
Auto Trait Implementations§
impl Freeze for SphericalLEDArm
impl RefUnwindSafe for SphericalLEDArm
impl Send for SphericalLEDArm
impl Sync for SphericalLEDArm
impl Unpin for SphericalLEDArm
impl UnsafeUnpin for SphericalLEDArm
impl UnwindSafe for SphericalLEDArm
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