Skip to content

bessel

src

bessel generates a Bessel beam. The algorithm is based on the paper by Hasegawa et al. (Hasegawa et al., 2017).

bessel(&geometry, apex, direction, theta, wavelength, &option, &mut dst);
Parameter Type Description
geometry &Geometry Device layout
apex Point3<f32> Coordinates of the apex of the virtual cone that generates the beam [mm]
direction UnitVector3<f32> Direction of the beam (unit vector)
theta Angle Half-apex angle of the cone (e.g. 18.0 * deg)
wavelength Length Wavelength
option &BesselOption Additional options (see below)
dst &mut [[Emission; _]] Output buffer
BesselOption {
intensity,
phase_offset,
}
Field Type Default Description
intensity Intensity Intensity::MAX Amplitude of all transducers
phase_offset Phase Phase::ZERO Phase added uniformly to all transducers
use autd3_rs::geometry::{Autd3, Geometry, Vector3, offset};
use autd3_rs::units::{deg, m, mm, s};
use autd3_rs::value::{Intensity, Phase};
use autd3_rs_pattern::{BesselOption, bessel, wavelength};
let geometry = Geometry::new(vec![Autd3::default()]);
let mut dst = geometry.pattern_buffer();
bessel(
&geometry,
geometry.center() + offset(0.0 * mm, 0.0 * mm, 150.0 * mm),
Vector3::z_axis(),
18.0 * deg,
wavelength(340.0 * m / s),
&BesselOption {
intensity: Intensity::MAX,
phase_offset: Phase::ZERO,
},
&mut dst,
);