set_intensity / set_phase / add_phase
srcThese functions rewrite the intensity and phase of a whole pattern buffer at once.
Pattern functions such as focus write only the phase, so set the intensity with these functions.
A buffer allocated with pattern_buffer starts at phase 0 and the maximum intensity.
Note that, in C#, the elements of new Emission[n] start at intensity 0.
set_intensity
Section titled “set_intensity”Sets the intensity of every transducer. The phase is left unchanged.
Passing Intensity::MIN produces no output.
set_intensity(intensity, &mut dst);set_intensity(intensity, dst)Pattern.SetIntensity(intensity, dst);set_phase
Section titled “set_phase”Sets the phase of every transducer. The intensity is left unchanged.
set_phase(phase, &mut dst);set_phase(phase, dst)Pattern.SetPhase(phase, dst);set_phase_and_intensity
Section titled “set_phase_and_intensity”Sets both the phase and the intensity of every transducer.
set_phase_and_intensity(phase, intensity, &mut dst);set_phase_and_intensity(phase, intensity, dst)Pattern.SetPhaseAndIntensity(phase, intensity, dst);add_phase
Section titled “add_phase”Adds a phase uniformly to every transducer (wrapping at 8 bits). The intensity is left unchanged.
add_phase(phase, &mut dst);add_phase(phase, dst)Pattern.AddPhase(phase, dst);| Parameter | Type | Description |
|---|---|---|
intensity |
Intensity |
Intensity |
phase |
Phase |
Phase |
dst |
&mut [[Emission; _]] |
Target buffer |
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 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);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])])
dst = geometry.pattern_buffer()
set_intensity(Intensity(0x80), dst)focus( geometry, geometry.center() + np.array([0.0, 0.0, 150.0]), wavelength(340 * m / s), dst,)add_phase(Phase.PI, dst)
set_intensity(Intensity.MIN, dst)using System.Numerics;using AUTD3;using static AUTD3.Units;
var geometry = new Geometry(new[] { new Autd3(Vector3.Zero) });
var dst = geometry.PatternBuffer();
Pattern.SetIntensity(new Intensity(0x80), dst);Pattern.Focus( geometry, geometry.Center + new Vector3(0.0f, 0.0f, 150.0f), Pattern.Wavelength(340.0f * m / s), dst);Pattern.AddPhase(Phase.Pi, dst);
Pattern.SetIntensity(Intensity.Min, dst);