bessel
srcbessel generates a Bessel beam.
The algorithm is based on the paper by Hasegawa et al. (Hasegawa et al., 2017).
bessel(&geometry, apex, direction, theta, wavelength, &option, &mut dst);bessel(geometry, apex, direction, theta, wavelength, option, dst)Pattern.Bessel(geometry, apex, direction, theta, wavelength, option, dst);| Parameter | Type | Description |
|---|---|---|
geometry |
&Geometry |
Device layout |
apex |
Point3<f32> |
Coordinates of the apex of the virtual cone that generates the beam [mm] |
direction |
UnitVector3<f32> |
Direction of the beam (unit vector) |
theta |
Angle |
Half-apex angle of the cone (e.g. 18.0 * deg) |
wavelength |
Length |
Wavelength |
option |
&BesselOption |
Additional options (see below) |
dst |
&mut [[Emission; _]] |
Output buffer |
BesselOption
Section titled “BesselOption”BesselOption { intensity, phase_offset,}BesselOption( intensity, phase_offset,)new BesselOption( intensity, phaseOffset)| Field | Type | Default | Description |
|---|---|---|---|
intensity |
Intensity |
Intensity::MAX |
Amplitude of all transducers |
phase_offset |
Phase |
Phase::ZERO |
Phase added uniformly to all transducers |
Example
Section titled “Example”use autd3_rs::geometry::{Autd3, Geometry, Vector3, offset};use autd3_rs::units::{deg, m, mm, s};use autd3_rs::value::{Intensity, Phase};use autd3_rs_pattern::{BesselOption, bessel, wavelength};
let geometry = Geometry::new(vec![Autd3::default()]);
let mut dst = geometry.pattern_buffer();
bessel( &geometry, geometry.center() + offset(0.0 * mm, 0.0 * mm, 150.0 * mm), Vector3::z_axis(), 18.0 * deg, wavelength(340.0 * m / s), &BesselOption { intensity: Intensity::MAX, phase_offset: Phase::ZERO, }, &mut dst,);import numpy as npfrom autd3.geometry import Autd3, Geometryfrom autd3.units import deg, m, sfrom autd3.value import Intensity, Phasefrom autd3_pattern import BesselOption, bessel, wavelength
geometry = Geometry([Autd3([0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0])])
dst = geometry.pattern_buffer()
bessel( geometry, geometry.center() + np.array([0.0, 0.0, 150.0]), np.array([0.0, 0.0, 1.0]), 18.0 * deg, wavelength(340 * m / s), BesselOption( intensity=Intensity.MAX, phase_offset=Phase.ZERO, ), dst,)using System.Numerics;using AUTD3;using static AUTD3.Units;
var geometry = new Geometry(new[] { new Autd3(Vector3.Zero) });
var dst = geometry.PatternBuffer();
Pattern.Bessel( geometry, geometry.Center + new Vector3(0.0f, 0.0f, 150.0f), Vector3.UnitZ, 18.0f * deg, Pattern.Wavelength(340.0f * m / s), new BesselOption( intensity: Intensity.Max, phaseOffset: Phase.Zero ), dst);