Group
Group
is a Gain
to use different Gain
for each transducer.
use autd3::prelude::*;
#[allow(unused_variables)]
fn main() -> Result<(), Box<dyn std::error::Error>> {
let x = 0.;
let y = 0.;
let z = 0.;
let g = Group::new(|_dev| |tr| match tr.idx() {
0..=100 => Some("null"),
_ => Some("focus"),
})
.set("null", Null::new())?
.set("focus", Focus::new(Point3::new(x, y, z)))?;
Ok(())
}
#include<optional>
#include<autd3.hpp>
int main() {
const auto x = 0.0;
const auto y = 0.0;
const auto z = 0.0;
const auto g = autd3::Group([](const auto& dev) {
return [](const auto& tr) -> std::optional<const char*> {
if (tr.idx() <= 100) return "null";
return "focus";
};
})
.set("null", autd3::gain::Null())
.set("focus", autd3::gain::Focus(autd3::Point3(x, y, z)));
return 0; }
using AUTD3Sharp.Utils;
using AUTD3Sharp.Gain;
var x = 0.0f;
var y = 0.0f;
var z = 0.0f;
var g = new Group(dev => tr => tr.Idx <= 100 ? "null" : "focus")
.Set("null", new Null())
.Set("focus", new Focus(new Point3(x, y, z)));
from pyautd3 import Focus, Group, Null
x = 1.0
y = 0.0
z = 0.0
g = (
Group(lambda _: lambda tr: "null" if tr.idx <= 100 else "focus")
.set("null", Null())
.set("focus", Focus([x, y, z]))
)
In the above case, transducers whose local indices are less or equal than 100 produce Null
, and the others produce Focus
.
NOTE: In this sample, we use string as a key, but you can use any type that can be used as a key of HashMap.