Find 1D or 3D voxel indices into a 3D image given spatial coordinates

```
coord2ind(coords, ...)
# S3 method for default
coord2ind(
coords,
imdims,
voxdims = NULL,
origin = NULL,
linear.indices = TRUE,
aperm = NULL,
Clamp = FALSE,
CheckRanges = !Clamp,
...
)
```

## Arguments

- coords
spatial coordinates of image voxels.

- ...
extra arguments passed to methods.

- imdims
array dimensions of 3D image *OR* an object for which a
`as.im3d`

object has been defined (see Details).

- voxdims
vector of 3 voxels dimensions (width, height, depth).

- origin
the origin of the 3D image.

- linear.indices
Whether or not to convert the voxel indices into a
linear 1D form (the default) or to keep as 3D indices.

- aperm
permutation order for axes.

- Clamp
Whether or not to map out of range coordinates to the nearest
in range index (default `FALSE`

)

- CheckRanges
whether to check if coordinates are out of range.

## Details

`coord2ind`

is designed to cope with any user-defined class for
which an as.im3d method exists. Presently the only example in the nat.*
ecosystem is `nat.templatebrains::as.im3d.templatebrain`

. The
existence of an `as.im3d`

method implies that
`voxdims`

,`origin`

, and `dim`

functions can be called. This
is the necessary information required to convert i,j,k logical indices into
x,y,z spatial indices.

## Examples

```
coord2ind(cbind(1,2,3), imdims = c(1024,512,218),
voxdims = c(0.622088, 0.622088, 0.622088), origin = c(0,0,0))
#> [1] 2624515
if (FALSE) {
## repeat but using a templatebrain object to specify the coordinate system
library(nat.flybrains)
coord2ind(cbind(1,2,3), JFRC2)
}
```