コンテンツにスキップ

set_intensity / set_phase / add_phase

src

パターンバッファ全体の振幅・位相を一括で書き換える. focus などのパターン関数は位相だけを書くので, 振幅はこれらの関数で設定する.

pattern_buffer で確保したバッファの初期値は位相 0・最大振幅である. C# では new Emission[n] の要素は振幅 0 で初期化されることに注意

全振動子の振幅を設定する. 位相は変えない. Intensity::MIN を渡すと無出力になる.

set_intensity(intensity, &mut dst);

全振動子の位相を設定する. 振幅は変えない.

set_phase(phase, &mut dst);

全振動子の位相と振幅を設定する.

set_phase_and_intensity(phase, intensity, &mut dst);

全振動子の位相へ一律に加算する (8 bit で折り返す). 振幅は変えない.

add_phase(phase, &mut dst);
引数 型 説明
intensity Intensity 振幅
phase Phase 位相
dst &mut [[Emission; _]] 対象バッファ
use autd3_rs::geometry::{Autd3, Geometry, offset};
use autd3_rs::units::{m, mm, s};
use autd3_rs::value::{Intensity, Phase};
use autd3_rs_pattern::{add_phase, focus, set_intensity, wavelength};
let geometry = Geometry::new(vec![Autd3::default()]);
let mut dst = geometry.pattern_buffer();
set_intensity(Intensity(0x80), &mut dst);
focus(
&geometry,
geometry.center() + offset(0.0 * mm, 0.0 * mm, 150.0 * mm),
wavelength(340.0 * m / s),
&mut dst,
);
add_phase(Phase::PI, &mut dst);
set_intensity(Intensity::MIN, &mut dst);