Launch {MCBackscattering} | R Documentation |
Launch Photons into Semi-infinite Media
Description
This function starts single photon into the semi-infinite media from surface (z = 0). The 3D launch direction c(u,v,w)
points into the media, according to the incident angle (relative to normal) and refractive index. If incident angle was zero, the incidence is normal (perpendicular to surface). If incidence angle was not zero, elliptical distortion of circular light beam is also considered.
Usage
Launch(myObject,iAngle=0)
Arguments
myObject |
The mandatory parameter of this function is the MCBS class created by |
iAngle |
This optional parameter means the incident angle relative to normal. The default value is 0 (the incidence is perpendicular to surface). |
Details
The Launch
function, alias Launch.MCBS
, calculates the start position of the single photon on the surface. The coordinates c(x,y,z)
are computed as z = 0 and c(x,y)
represent random position in circular light beam. The values z > 0 are inside the media. Beam intensity distribution is considered to be flat, what means that positions have equal probability to occur. Starting polar coordinates are adjusted randomly using uniform distribution by function Setup
. If incident angle was not zero, elliptical distortion is corrected along the y-axis.
Value
The Launch
function returns an MCBS object as class
. Typically the same object is used in argument and result.
Position and starting 3D vector are calculated:
x |
position along x-axis, calculated from random polar coordinates. |
y |
position along y-axis, calculated from random polar coordinates. If incident angle was not zero, this value is distorted. |
z |
initial depth, z=0 on the surface. |
u |
launch vector coordinate along x-axis. |
v |
launch vector coordinate along y-axis. If incident angle was not zero, this value is calculated according to the incident angle and refractive index. |
w |
launch vector coordinate along z-axis. If incident angle was not zero, this value is calculated according to the incident angle and refractive index. |
Note
Theoretical models assume the incident angle is zero. During measurement, camera and lightsource cannot occupy the same direction. According to the Fresnel reflection equations, incident angle below 20° is recommended. The non-zero incident angle requires correction in computation by means of refraction of the initial direction inside media and elliptical distortion of circular light beam on the surface.
Please note that this function is not intended to use independently. It calculates start values for photon of index myObject$idx
. If you want to use it to build your custom simulation, do not forget to assign index, such as myObject$idx <- 1
. Index number must be between 1 and myObject$MAXLEN
.
References
Jacques, S.L. (1998) Light Distributions from Point, Line and Plane Sources for Photochemical Reactions and Fluorescence in Turbid Biological Tissues. Photochemistry and Photobiology, 67(1): 23–-32. doi: 10.1111/j.1751-1097.1998.tb05161.x.
Wang, L., Jacques, S.L., Zheng, L. (1997) CONV-convolution for responses to a finite diameter photon beam incident on multi-layered tissues. Computer Methods and Programs in Biomedicine, 54: 141–-150. doi: 10.1016/S0169-2607(97)00021-7.
See Also
MCBS
for construction of object with initial input parameters.
Simulation
for running the simulation with adjusted parameters.
Chart
for plot of calculated photon flux profile.
Export
for export of photon flux with corresponding radii.
Setup
for initial computation of specular reflection and transport albedo.
Bounce
for interaction with surface and computation of photon flux leaving media.
Move
for moving single photon forward.
Absorb
for absorption of single photon energy in interaction with media.
Scatter
for single photon scattering interaction with media.
Randomize
for adjustment of random trajectory vectors.
Examples
## Apple simulation data according to Qin and Lu (2006).
## DOI: 10.13031/2013.20862
# create object
cfgMedia <- c(0.63,30,0,1.4)
cfgSimulation <- c(1e6,0.05,1e-9,3,0.012)
apple <- MCBS(cfgMedia,cfgSimulation)
apple <- Setup(apple)
# calculate first photon
apple$idx <- 1
apple <- Launch(apple)
# see vector coordinates
cat("Start position",apple$x,":",apple$y,"\n")
cat("Direction",apple$u,":",apple$v,":",apple$w,"\n")
# calculate first photon with 10° incident angle
apple$idx <- 1
apple <- Launch(apple,10)
# see vector coordinates
cat("Start position",apple$x,":",apple$y,"\n")
cat("Direction",apple$u,":",apple$v,":",apple$w,"\n")