Bessel
BesselBeam
generates a Bessel beam.
This Gain
is based on the paper by Hasegawa et al 1.
use autd3::prelude::*;
#[allow(unused_variables)]
fn main() {
let x = 0.;
let y = 0.;
let z = 0.;
let nx = 0.;
let ny = 0.;
let nz = 0.;
let theta = 0.;
let g = Bessel::new(
Point3::new(x, y, z),
UnitVector3::new_normalize(Vector3::new(nx, ny, nz)),
theta * rad,
);
}
#include<autd3.hpp>
int main() {
const auto x = 0.0;
const auto y = 0.0;
const auto z = 0.0;
const auto nx = 0.0;
const auto ny = 0.0;
const auto nz = 1.0;
const auto theta = 0.0;
const auto g = autd3::Bessel(autd3::Point3(x, y, z), autd3::Vector3(nx, ny, nz),
theta* autd3::rad);
return 0; }
from pyautd3 import Bessel, rad
x = 0.0
y = 0.0
z = 0.0
nx = 1.0
ny = 0.0
nz = 0.0
theta = 0.0
g = Bessel([x, y, z], [nx, ny, nz], theta * rad)
from pyautd3 import Bessel, rad
x = 0.0
y = 0.0
z = 0.0
nx = 1.0
ny = 0.0
nz = 0.0
theta = 0.0
g = Bessel([x, y, z], [nx, ny, nz], theta * rad)
The first argument of the constructor is the apex of the virtual cone producing the beam, the second argument is the direction of the beam, and the third argument is the angle between the plane perpendicular to the beam and the side of the virtual cone producing the beam ( in the figure below).
Set intensity
You can change emission intensity by with_intensity
method.
use autd3::prelude::*;
#[allow(unused_variables)]
fn main() {
let x = 0.;
let y = 0.;
let z = 0.;
let nx = 0.;
let ny = 0.;
let nz = 0.;
let theta = 0.;
let g = Bessel::new(
Point3::new(x, y, z),
UnitVector3::new_normalize(Vector3::new(nx, ny, nz)),
theta * rad
)
.with_intensity(0xFF)
.with_phase_offset(0x00);
}
#include<autd3.hpp>
#include <limits>
int main() {
const auto x = 0.0;
const auto y = 0.0;
const auto z = 0.0;
const auto nx = 0.0;
const auto ny = 0.0;
const auto nz = 1.0;
const auto theta = 0.0;
const auto g = autd3::Bessel(autd3::Point3(x, y, z), autd3::Vector3(nx, ny, nz),
theta* autd3::rad)
.with_intensity(0xFF)
.with_phase_offset(0x00);
return 0; }
from pyautd3 import Bessel, rad
x = 0.0
y = 0.0
z = 0.0
nx = 1.0
ny = 0.0
nz = 0.0
theta = 0.0
g = Bessel([x, y, z], [nx, ny, nz], theta * rad)\
.with_intensity(0xFF)\
.with_phase_offset(0x00)
from pyautd3 import Bessel, rad
x = 0.0
y = 0.0
z = 0.0
nx = 1.0
ny = 0.0
nz = 0.0
theta = 0.0
g = Bessel([x, y, z], [nx, ny, nz], theta * rad)\
.with_intensity(0xFF)\
.with_phase_offset(0x00)
1
Hasegawa, Keisuke, et al. "Electronically steerable ultrasound-driven long narrow air stream." Applied Physics Letters 111.6 (2017): 064104.