Skip to content

laguerre_gaussian

src

laguerre_gaussian_phase generates a Laguerre-Gaussian (LG) beam .

Besides laguerre_gaussian_phase, which writes only the phase, there is laguerre_gaussian_intensity, which writes only the amplitude.

let option = LaguerreGaussianOption {
p: 1,
l: 1,
waist: 10.0 * mm,
};
laguerre_gaussian_phase(&geometry, target, axis, option, wavelength, &mut dst);
laguerre_gaussian_intensity(&geometry, target, axis, 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)
option LaguerreGaussianOption Mode and waist
wavelength Length Wavelength
dst &mut [[Emission; _]] Output buffer
Field Type Description
p u32 Radial mode index
l i32 Azimuthal mode index
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::{
LaguerreGaussianOption, laguerre_gaussian_phase, laguerre_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 = LaguerreGaussianOption {
p: 0,
l: 1,
waist: 10.0 * mm,
};
let wavelength = wavelength(340.0 * m / s);
laguerre_gaussian_phase(
&geometry,
target,
Vector3::z_axis(),
option,
wavelength,
&mut dst,
);
laguerre_gaussian_intensity(
&geometry,
target,
Vector3::z_axis(),
option,
wavelength,
&mut dst,
);