Skip to content
This is the development version of the documentation. It may change before the next release. See 0.9.x for the latest release.

set_intensity / set_phase / add_phase

src

These functions rewrite a whole phase buffer or intensity buffer at once. Pattern functions such as focus write only to the phase buffer, so set the intensity with set_intensity.

Buffers allocated with phase_buffer / intensity_buffer start at phase 0 and the maximum intensity. Note that, in C#, the elements of new Intensity[n] start at intensity 0.

Sets the intensity of every transducer in an intensity buffer. Passing Intensity::MIN produces no output.

set_intensity(intensity, &mut intensities);

Sets the phase of every transducer in a phase buffer.

set_phase(phase, &mut phases);

Adds a phase uniformly to every transducer in a phase buffer (wrapping at 8 bits).

add_phase(phase, &mut phases);
Parameter Type Description
intensity Intensity Intensity
phase Phase Phase
dst &mut [Vec<Intensity>] / &mut [Vec<Phase>] Target buffer (intensities for set_intensity, phases for 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);