Skip to content

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 dst);
hermite_gaussian_intensity(&geometry, target, axis, x_dir, option, wavelength, &mut dst);
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 [[Emission; _]] Output buffer
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 dst = geometry.pattern_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 dst,
);
hermite_gaussian_intensity(
&geometry,
target,
Vector3::z_axis(),
Vector3::x_axis(),
option,
wavelength,
&mut dst,
);