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

set_intensity / set_phase / add_phase

src

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

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

振幅バッファの全振動子の振幅を設定する. Intensity::MIN を渡すと無出力になる.

set_intensity(intensity, &mut intensities);

位相バッファの全振動子の位相を設定する.

set_phase(phase, &mut phases);

位相バッファの全振動子の位相へ一律に加算する (8 bit で折り返す).

add_phase(phase, &mut phases);
引数 型 説明
intensity Intensity 振幅
phase Phase 位相
dst &mut [Vec<Intensity>] / &mut [Vec<Phase>] 対象バッファ (set_intensity は振幅, set_phase / add_phase は位相)
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 phases = geometry.phase_buffer();
let mut intensities = geometry.intensity_buffer();
set_intensity(Intensity(0x80), &mut intensities);
focus(
&geometry,
geometry.center() + offset(0.0 * mm, 0.0 * mm, 150.0 * mm),
wavelength(340.0 * m / s),
&mut phases,
);
add_phase(Phase::PI, &mut phases);
set_intensity(Intensity::MIN, &mut intensities);