# AngularSpectrumMethod

Documentation for AngularSpectrumMethod.

AngularSpectrumMethod.ASM!Method
ASM!(u, λ, Δx, Δy, z; expand=true)

Same as ASM, but operates in-place on u, which must be an array of complex floating-point numbers.

AngularSpectrumMethod.ASMMethod
ASM(u, λ, Δx, Δy, z; expand=true)

return diffracted field by the angular spectrum method (ASM). Evanescent waves are not eliminated but attenuated as $\exp(-2{\pi}wz)$. Without attenuation, the total energy $\iint|u|\mathrm{d}x\mathrm{d}y$ is conserved.

Arguments

• u: input field.
• λ: wavelength.
• Δx: sampling interval the in x-axis.
• Δy: sampling interval the in y-axis.
• z: diffraction distance.
• expand=true: if true (default), perform 4× expansion and zero padding for aliasing suppression.
Note

The x-axis is the horizontal direction, and the y-axis is the vertical.

AngularSpectrumMethod.ScalableASMMethod
ScalableASM(u, λ, Δx, Δy, z; expand=true)

return automatically scaled diffraction field by the scalable ASM (see Ref. 1). The sampling pitch in the destination plane $\Delta_{d}$ is $\Delta_{d}=\dfrac{\lambda z}{pN\Delta_{s}}$, where $\Delta_{s}$ is the sampling pitch in the source plane, $N$ is the number of pixels in the source or destination plane, and $p=2$ is the padding factor.

1. Rainer Heintzmann, Lars Loetgering, and Felix Wechsler, "Scalable angular spectrum propagation," Optica 10, 1407-1416 (2023)
AngularSpectrumMethod.ScaledASM!Method
ScaledASM!(u, λ, Δx, Δy, z, R; expand=true)

Same as ScaledASM, but operates in-place on u, which must be an array of complex floating-point numbers.

AngularSpectrumMethod.ShiftedASM!Method
ShiftedASM!(u, λ, Δx, Δy, z, x₀, y₀; expand=true)

Same as ShiftedASM, but operates in-place on u, which must be an array of complex floating-point numbers.

AngularSpectrumMethod.TiltedASM!Method
TiltedASM!(u, λ, Δx, Δy, T; expand=true, weight=false)

Same as TiltedASM, but operates in-place on u, which must be an array of complex floating-point numbers.

AngularSpectrumMethod.TiltedASMMethod
TiltedASM(u, λ, Δx, Δy, T; expand=true, weight=false)

return tilted diffraction field for a rotation matrix $T$ by the tilted ASM (see Ref. 1, 2). If weight=true, a diagonal weighting matrix is used as the Jacobian determinant (default false). In this case, the energy conservation improves, but the computational cost is high (see Ref. 3).

Note

Rotations.jl is helpful in generating rotation matrices.