Bessel

Source

BesselではBessel beamを生成する. このGainは長谷川らの論文1に基づく.

use autd3::prelude::*;
fn main() {
let x = 0.;
let y = 0.;
let z = 0.;
let nx = 0.;
let ny = 0.;
let nz = 0.;
let theta = 0. * rad;
let _ = 
Bessel {
    pos: Point3::new(x, y, z),
    dir: UnitVector3::new_normalize(Vector3::new(nx, ny, nz)),
    theta,
    option: BesselOption {
        intensity: EmitIntensity::MAX,
        phase_offset: Phase::ZERO,
    },
};
}
#include<autd3.hpp>
int main() {
using namespace autd3;
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;
Bessel(Point3(x, y, z), Vector3(nx, ny, nz), theta* rad,
       BesselOption{
           .intensity = std::numeric_limits<EmitIntensity>::max(),
           .phase_offset = Phase::zero(),
       });
return 0; }
using AUTD3Sharp;
using AUTD3Sharp.Utils;
using AUTD3Sharp.Gain;
using static AUTD3Sharp.Units;
var x = 0.0f;
var y = 0.0f;
var z = 0.0f;
var nx = 0.0f;
var ny = 0.0f;
var nz = 1.0f;
var theta = 0.0f;
new Bessel(
    pos: new Point3(x, y, z),
    dir: new Vector3(nx, ny, nz),
    theta: theta * rad,
    option: new BesselOption
    {
        Intensity = EmitIntensity.Max,
        PhaseOffset = Phase.Zero
    }
);
from pyautd3 import Bessel, BesselOption, EmitIntensity, Phase, rad

x = 0.0
y = 0.0
z = 0.0
nx = 1.0
ny = 0.0
nz = 0.0
theta = 0.0
Bessel(
    pos=[x, y, z],
    direction=[nx, ny, nz],
    theta=theta * rad,
    option=BesselOption(
        intensity=EmitIntensity.MAX,
        phase_offset=Phase.ZERO,
    ),
)

ここで, posはビームを生成する仮想円錐 (下図の点線) の頂点であり, dirはビームの方向, thetaはビームに垂直な面とビームを生成する仮想円錐の側面となす角度である (下図の).

Bessel beam (長谷川らの論文より引用)

オプションにて, 出力振幅と位相オフセットを指定できる. デフォルト値は上記の通り.

1

Hasegawa, Keisuke, et al. “Electronically steerable ultrasound-driven long narrow air stream.” Applied Physics Letters 111.6 (2017): 064104.