Skip to content
This is the development version of the documentation. It may change before the next release. See 0.9.x for the latest release.

hermite_gaussian

src

hermite_gaussian_phase generates a Hermite-Gaussian (HG) beam .

As with laguerre_gaussian_phase, the amplitude is changed with hermite_gaussian_intensity.

let option = HermiteGaussianOption {
m: 1,
n: 0,
waist: 10.0 * mm,
};
hermite_gaussian_phase(&geometry, target, axis, x_dir, option, wavelength, &mut phases);
hermite_gaussian_intensity(&geometry, target, axis, x_dir, option, wavelength, &mut intensities);
Parameter Type Description
geometry &Geometry Device layout
target Point3<f32> Center of the beam waist [mm]
axis UnitVector3<f32> Propagation direction (unit vector)
x_dir UnitVector3<f32> Direction along which the m nodes line up
option HermiteGaussianOption Mode and waist
wavelength Length Wavelength
dst &mut [Vec<Phase>] / &mut [Vec<Intensity>] Output buffer (phases for *_phase, intensities for *_intensity)
Field Type Description
m u32 Mode index along x_dir
n u32 Mode index along the orthogonal direction
waist Length Beam waist radius (positive)
use autd3_rs::geometry::{Autd3, Geometry, Vector3, offset};
use autd3_rs::units::{m, mm, s};
use autd3_rs_pattern::{
HermiteGaussianOption, hermite_gaussian_phase, hermite_gaussian_intensity, wavelength,
};
let geometry = Geometry::new(vec![Autd3::default()]);
let mut phases = geometry.phase_buffer();
let mut intensities = geometry.intensity_buffer();
let target = geometry.center() + offset(0.0 * mm, 0.0 * mm, 150.0 * mm);
let option = HermiteGaussianOption {
m: 1,
n: 1,
waist: 10.0 * mm,
};
let wavelength = wavelength(340.0 * m / s);
hermite_gaussian_phase(
&geometry,
target,
Vector3::z_axis(),
Vector3::x_axis(),
option,
wavelength,
&mut phases,
);
hermite_gaussian_intensity(
&geometry,
target,
Vector3::z_axis(),
Vector3::x_axis(),
option,
wavelength,
&mut intensities,
);