これは開発版のドキュメントである. 内容は次のリリースまでに変更される可能性がある. 最新のリリース版は 0.9.x を参照.
laguerre_gaussian
srclaguerre_gaussian_phase はラゲール・ガウシアン (LG) ビーム
位相を変更する laguerre_gaussian_phase とは別に振幅のみを書く laguerre_gaussian_intensity がある.
let option = LaguerreGaussianOption { p: 1, l: 1, waist: 10.0 * mm,};laguerre_gaussian_phase(&geometry, target, axis, option, wavelength, &mut phases);laguerre_gaussian_intensity(&geometry, target, axis, option, wavelength, &mut intensities);option = LaguerreGaussianOption(p=1, l=1, waist=10.0)laguerre_gaussian_phase(geometry, target, axis, option, wavelength, phases)laguerre_gaussian_intensity(geometry, target, axis, option, wavelength, intensities)var option = new LaguerreGaussianOption(p: 1, l: 1, waist: 10.0f * mm);Pattern.LaguerreGaussianPhase(geometry, target, axis, option, wavelength, phases);Pattern.LaguerreGaussianIntensity(geometry, target, axis, option, wavelength, intensities);| 引数 | 型 | 説明 |
|---|---|---|
geometry |
&Geometry |
デバイス配置 |
target |
Point3<f32> |
ビームウエストの中心座標 [mm] |
axis |
UnitVector3<f32> |
ビームの伝搬方向 (単位ベクトル) |
option |
LaguerreGaussianOption |
モードとウエスト |
wavelength |
Length |
波長 |
dst |
&mut [Vec<Phase>] / &mut [Vec<Intensity>] |
出力バッファ (*_phase は位相, *_intensity は振幅) |
| フィールド | 型 | 説明 |
|---|---|---|
p |
u32 |
動径方向のモード次数 |
l |
i32 |
方位角方向のモード次数 |
waist |
Length |
ビームウエスト半径 |
Example
Section titled “Example”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 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 = 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 phases,);laguerre_gaussian_intensity( &geometry, target, Vector3::z_axis(), option, wavelength, &mut intensities,);import numpy as npfrom autd3.geometry import Autd3, Geometryfrom autd3.units import m, sfrom autd3_pattern import ( LaguerreGaussianOption, laguerre_gaussian_phase, laguerre_gaussian_intensity,)from autd3_pattern import wavelength as calc_wavelength
geometry = Geometry([Autd3([0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0])])
phases = geometry.phase_buffer()intensities = geometry.intensity_buffer()
target = geometry.center() + np.array([0.0, 0.0, 150.0])option = LaguerreGaussianOption(p=0, l=1, waist=10.0)wavelength = calc_wavelength(340 * m / s)laguerre_gaussian_phase(geometry, target, np.array([0.0, 0.0, 1.0]), option, wavelength, phases)laguerre_gaussian_intensity(geometry, target, np.array([0.0, 0.0, 1.0]), option, wavelength, intensities)using System.Numerics;using AUTD3;using static AUTD3.Units;
var geometry = new Geometry(new[] { new Autd3(Vector3.Zero) });
var phases = geometry.PhaseBuffer();var intensities = geometry.IntensityBuffer();
var target = geometry.Center + new Vector3(0.0f, 0.0f, 150.0f);var option = new LaguerreGaussianOption(p: 0, l: 1, waist: 10.0f * mm);var wavelength = Pattern.Wavelength(340.0f * m / s);Pattern.LaguerreGaussianPhase(geometry, target, Vector3.UnitZ, option, wavelength, phases);Pattern.LaguerreGaussianIntensity(geometry, target, Vector3.UnitZ, option, wavelength, intensities);