# makeBowl

Create a binary map of a bowl within a 3D grid.

## Syntax

bowl = makeBowl(grid_size, bowl_pos, radius, diameter, focus_pos) bowl = makeBowl(grid_size, bowl_pos, radius, diameter, focus_pos, ...)

## Description

`makeBowl`

creates a binary map of a bowl from a symmetric spherical shell within a three-dimensional grid. The bowl position is denoted by 1's in the matrix with 0's elsewhere. The bowl surface within the Cartesian grid is found using a bi-directional line search along each row and column to find the grid point with radius closest to the desired radius.

The position of the bowl is set by `bowl_pos`

, which corresponds to the center of the rear bowl surface. The orientation of the bowl is set by `focus_pos`

, which corresponds to any point on the axis of the bowl (note, this must not be equal to `bowl_pos`

). It is assumed that the solid angle of the bowl is equal to or less than 2*pi steradians. If the `radius`

is set to `inf`

, a disc is generated.

In some cases, the generated bowl will not be simply connected, and there will be a small number of overlapping grid points. To remove these points, set the optional input 'RemoveOverlap' to true.

## Examples

% define parameters grid_size = [32, 64, 64]; bowl_pos = [1, 32, 32]; radius = 60; diameter = 61; focus_pos = [32, 32, 32]; % create bowl makeBowl(grid_size, bowl_pos, radius, diameter, focus_pos, 'Plot', true);

% define parameters grid_size = [128, 128, 128]; bowl_pos = [80, 80, 80]; radius = 60; diameter = 81; focus_pos = [1, 1, 1]; % create bowl makeBowl(grid_size, bowl_pos, radius, diameter, focus_pos, 'Plot', true);

## Inputs

`grid_size` |
size of the 3D grid given as a three element vector [Nx, Ny, Nz] [grid points] |

`bowl_pos` |
centre of the rear surface of the bowl given as a three element vector [bx, by, bz] [grid points] |

`radius` |
radius of curvature of the bowl [grid points] |

`diameter` |
aperture diameter of the bowl [grid points] |

`focus_pos` |
any point on the beam axis of the bowl given as a three element vector [fx, fy, fz] [grid points] |

## Optional Inputs

Optional 'string', value pairs that may be used to modify the default computational settings.

Input | Valid Settings | Default | Description |
---|---|---|---|

`'Binary'` |
(Boolean scalar) |
`false` |
Boolean controlling whether the bowl map is returned as a double precision matrix (false) or a logical matrix (true). |

`'Plot'` |
(Boolean scalar) |
`false` |
Boolean controlling whether the bowl is plotted using `voxelPlot` . |

`'RemoveOverlap'` |
(Boolean scalar) |
`false` |
Boolean controlling whether overlapped grid points are removed. |

## Outputs

`bowl` |
3D binary map of a bowl |

## See Also

`makeArc`

, `makeBall`

, `makeMultiBowl`

, `makeSphere`

, `makeSphericalSection`