Available on crate feature
derive only.Expand description
Utilities for user-defined Gain and Modulation.
§Example
The following example shows how to define a custom Gain that generates a single focal point.
use autd3_core::derive::*;
use autd3_core::geometry::Point3;
use autd3_core::defined::rad;
#[derive(Gain, Debug)]
pub struct FocalPoint {
pos: Point3,
}
pub struct Impl {
pos: Point3,
wavenumber: f32,
}
impl GainCalculator for Impl {
fn calc(&self, tr: &Transducer) -> Drive {
Drive {
phase: Phase::from(-(self.pos - tr.position()).norm() * self.wavenumber * rad),
intensity: EmitIntensity::MAX,
}
}
}
impl GainCalculatorGenerator for FocalPoint {
type Calculator = Impl;
fn generate(&mut self, device: &Device) -> Self::Calculator {
Impl {
pos: self.pos,
wavenumber: device.wavenumber(),
}
}
}
impl Gain for FocalPoint {
type G = FocalPoint;
fn init(self) -> Result<Self::G, GainError> {
Ok(self)
}
}The following example shows how to define a modulation that outputs the maximum value only for a moment.
use autd3_core::defined::kHz;
use autd3_core::derive::*;
#[derive(Modulation, Debug)]
pub struct Burst {
}
impl Burst {
pub fn new() -> Self {
Self {}
}
}
impl Modulation for Burst {
fn calc(self) -> Result<Vec<u8>, ModulationError> {
Ok((0..4000)
.map(|i| if i == 3999 { u8::MAX } else { u8::MIN })
.collect())
}
fn sampling_config(&self) -> SamplingConfig {
SamplingConfig::new(4. * kHz)
}
}Re-exports§
pub use crate::datagram::DatagramOption;pub use crate::datagram::Segment;pub use crate::datagram::TransitionMode;pub use crate::geometry::Geometry;pub use crate::datagram::DatagramS;pub use crate::gain::BitVec;pub use crate::gain::Drive;pub use crate::gain::EmitIntensity;pub use crate::gain::Gain;pub use crate::gain::GainCalculator;pub use crate::gain::GainCalculatorGenerator;pub use crate::gain::GainError;pub use crate::gain::GainOperationGenerator;pub use crate::gain::Phase;pub use crate::geometry::Device;pub use crate::geometry::Transducer;pub use crate::datagram::DatagramL;pub use crate::datagram::LoopBehavior;pub use crate::modulation::Modulation;pub use crate::modulation::ModulationError;pub use crate::modulation::ModulationOperationGenerator;pub use tracing;
Structs§
- Arc
- A thread-safe reference-counting pointer. ‘Arc’ stands for ‘Atomically Reference Counted’.
- HashMap
- A hash map implemented with quadratic probing and SIMD lookup.
Enums§
- Sampling
Config sampling_config - The configuration for sampling.
- Sampling
Config Error sampling_config - An error produced by the sampling configuration.