コンテンツにスキップ
これは開発版のドキュメントである. 内容は次のリリースまでに変更される可能性がある. 最新のリリース版は 0.9.x を参照.

hermite_gaussian

src

hermite_gaussian_phase はエルミート・ガウシアン (HG) ビーム を生成する.

laguerre_gaussian_phase と同様に, 振幅は 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);
引数 型 説明
geometry &Geometry デバイス配置
target Point3<f32> ビームウエストの中心座標 [mm]
axis UnitVector3<f32> ビームの伝搬方向 (単位ベクトル)
x_dir UnitVector3<f32> 次数 m の節面を並べる方向
option HermiteGaussianOption モードとウエスト
wavelength Length 波長
dst &mut [Vec<Phase>] / &mut [Vec<Intensity>] 出力バッファ (*_phase は位相, *_intensity は振幅)
フィールド 型 説明
m u32 x_dir 方向のモード次数
n u32 それに直交する方向のモード次数
waist Length ビームウエスト半径 (正値)
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,
);