# Find all pairwise distances within a maximum distance.

### Description

These are the lower level functions to
compute the distances among two sets of locations but being limited to
distances less than a maximum threshold (see delta below ). These functions are useful for
generating a sparse matrix on distances and evaluating a compactly supported function (such as the Wendland). The location - location method supports the distance metrics:
Euclidean, spherical, componentwise and Manhattan.
`LKDistComponent`

and `LKDistComponentGrid`

return the coordinate-wise distances and are
useful for evaluating a tensor product basis functions.

### Usage

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | ```
LKDist(x1, x2, delta, max.points = NULL, mean.neighbor = 50,
distance.type = "Euclidean")
LKDistComponents(x1, x2, delta, max.points = NULL, mean.neighbor = 50,
distance.type = "Euclidean")
LKDistGrid(x1, gridList, delta, max.points = NULL, mean.neighbor = NULL,
distance.type = "Euclidean", periodic)
LKDistGridComponents(
x1, gridList, delta,
max.points = NULL, mean.neighbor = NULL,
distance.type = "Euclidean")
LKGridCheck(distance.type, x1, gridList )
LKGridFindNmax(n1, max.points, mean.neighbor, delta, gridList)
``` |

### Arguments

`gridList` |
A list with each component vector that specifies the grid points for an equally spaced grid. Can have class gridList. (See also help on gridlist). |

`n1` |
Number of rows of x1. |

`x1` |
A matrix with rows indexing locations and columns indexing coordinates. |

`x2` |
A matrix with rows indexing locations and columns indexing coordinates. |

`delta` |
The maximum distance to find pairwise distances. |

`max.points` |
Used for dynamically assigning matrix size this should be larger than the total number of pairwise distances less than delta. |

`mean.neighbor` |
Used for dynamically assigning matrix size this is the average number of
points that are less that delta in distance to the |

`periodic` |
A logical vector with length ncol( x1). If a component is TRUE then that dimension is treated as periodic. |

`distance.type` |
A text string either "Euclidean", "GreatCircle", "Chordal", "Manhattan". |

### Value

**LKDist** and **LKDistGrid** a list representing a sparse matrix in spind format.

**LKDistComponent** and**LKDistGridComponent** a list representing a sparse matrix using the spind format except the `ra`

component is now a matrix. The columns of ra
being the individual distances for each coordinate.

**directionCosine** a matrix where rows index the different points and
columns index x,y,z.

**LKGridFindNmax** returns the maximum number of nonzero elements expected in a pairwise distance matrix.

**LKGridFindNmax** checks that the calling arguments are
compatible with the pairwise distance computation.

### Author(s)

Doug Nychka

### See Also

`spind2spam`

, `spind2full`

### Examples

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | ```
set.seed( 123)
x<- matrix( runif(100*2), 100,2)
DMatrix<- LKDist( x,x, delta=.1)
# coerce to spam matrix format
DMatrix2<- spind2spam( DMatrix)
# a grid
gridL<- list( x1= seq(0,1,.2), x2= seq( 0,2,.2) , x3= seq( -1,1,.2))
class(gridL)<- "gridList"
x1<- cbind( runif( 100), runif(100)*2, 2*(runif( 100) -.5) )
look<- LKDistGrid( x1, gridL, delta=.45)
# check against rdist.
# look2<- rdist( x1, make.surface.grid(gridL))
# look2[ look2 >= .45] <- 0
# max( abs(look- look2)[look>0] )
# test of periodic option
gridL<- structure(
list( x1= seq(0,1,.02),
x2= seq( 0,1,.02)),
class="gridList")
look1<- LKDistGrid( rbind(c(0,0)), gridL, delta=.35,
periodic=c(TRUE,FALSE))
look2<- spind2full(look1)
image.plot( as.surface( gridL, look2) )
look1<- LKDistGrid( rbind(c(0,0)), gridL, delta=.35,
periodic=c(TRUE,TRUE))
look2<- spind2full(look1)
image.plot( as.surface( gridL, look2) )
``` |