これは開発版のドキュメントである. 内容は次のリリースまでに変更される可能性がある. 最新のリリース版は 0.9.x を参照.
set_intensity / set_phase / add_phase
src位相バッファ・振幅バッファ全体を一括で書き換える.
focus などのパターン関数は位相バッファだけを書くので, 振幅は set_intensity で設定する.
phase_buffer / intensity_buffer で確保したバッファの初期値は位相 0・最大振幅である.
C# では new Intensity[n] の要素は振幅 0 で初期化されることに注意
set_intensity
Section titled “set_intensity”振幅バッファの全振動子の振幅を設定する.
Intensity::MIN を渡すと無出力になる.
set_intensity(intensity, &mut intensities);set_intensity(intensity, intensities)Pattern.SetIntensity(intensity, intensities);set_phase
Section titled “set_phase”位相バッファの全振動子の位相を設定する.
set_phase(phase, &mut phases);set_phase(phase, phases)Pattern.SetPhase(phase, phases);add_phase
Section titled “add_phase”位相バッファの全振動子の位相へ一律に加算する (8 bit で折り返す).
add_phase(phase, &mut phases);add_phase(phase, phases)Pattern.AddPhase(phase, phases);| 引数 | 型 | 説明 |
|---|---|---|
intensity |
Intensity |
振幅 |
phase |
Phase |
位相 |
dst |
&mut [Vec<Intensity>] / &mut [Vec<Phase>] |
対象バッファ (set_intensity は振幅, set_phase / add_phase は位相) |
Example
Section titled “Example”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);import numpy as npfrom autd3.geometry import Autd3, Geometryfrom autd3.units import m, sfrom autd3.value import Intensity, Phasefrom autd3_pattern import add_phase, focus, set_intensity, 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()
set_intensity(Intensity(0x80), intensities)focus( geometry, geometry.center() + np.array([0.0, 0.0, 150.0]), wavelength(340 * m / s), phases,)add_phase(Phase.PI, phases)
set_intensity(Intensity.MIN, 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();
Pattern.SetIntensity(new Intensity(0x80), intensities);Pattern.Focus( geometry, geometry.Center + new Vector3(0.0f, 0.0f, 150.0f), Pattern.Wavelength(340.0f * m / s), phases);Pattern.AddPhase(Phase.Pi, phases);
Pattern.SetIntensity(Intensity.Min, intensities);