hermite_gaussian
srchermite_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);option = HermiteGaussianOption(m=1, n=0, waist=10.0)hermite_gaussian_phase(geometry, target, axis, x_dir, option, wavelength, dst)hermite_gaussian_intensity(geometry, target, axis, x_dir, option, wavelength, dst)var option = new HermiteGaussianOption(m: 1, n: 0, waist: 10.0f * mm);Pattern.HermiteGaussianPhase(geometry, target, axis, xDir, option, wavelength, dst);Pattern.HermiteGaussianIntensity(geometry, target, axis, xDir, option, wavelength, 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 |
Example
Section titled “Example”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,);import numpy as npfrom autd3.geometry import Autd3, Geometryfrom autd3.units import m, sfrom autd3_pattern import ( HermiteGaussianOption, hermite_gaussian_phase, hermite_gaussian_intensity, wavelength,)
geometry = Geometry([Autd3([0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0])])
dst = geometry.pattern_buffer()
target = geometry.center() + np.array([0.0, 0.0, 150.0])axis = np.array([0.0, 0.0, 1.0])x_dir = np.array([1.0, 0.0, 0.0])option = HermiteGaussianOption(m=1, n=1, waist=10.0)wl = wavelength(340 * m / s)hermite_gaussian_phase(geometry, target, axis, x_dir, option, wl, dst)hermite_gaussian_intensity(geometry, target, axis, x_dir, option, wl, dst)using System.Numerics;using AUTD3;using static AUTD3.Units;
var geometry = new Geometry(new[] { new Autd3(Vector3.Zero) });
var dst = geometry.PatternBuffer();
var target = geometry.Center + new Vector3(0.0f, 0.0f, 150.0f);var option = new HermiteGaussianOption(m: 1, n: 1, waist: 10.0f * mm);var wavelength = Pattern.Wavelength(340.0f * m / s);Pattern.HermiteGaussianPhase(geometry, target, Vector3.UnitZ, Vector3.UnitX, option, wavelength, dst);Pattern.HermiteGaussianIntensity(geometry, target, Vector3.UnitZ, Vector3.UnitX, option, wavelength, dst);