## Interpolation Using a Specific Delaunay Triangulation

### Nearest-Neighbor Interpolation Using a delaunayTriangulation Query

This example shows how to perform nearest-neighbor interpolation on a scattered set of points using a specific Delaunay triangulation.

Create a `delaunayTriangulation` of a set of scattered points in 2-D.

```P = -2.5 + 5*gallery('uniformdata',[50 2],0); DT = delaunayTriangulation(P)```
```DT = delaunayTriangulation with properties: Points: [50x2 double] ConnectivityList: [87x3 double] Constraints: [] ```

Sample a parabolic function, V(x,y), at the points specified in `P`.

`V = P(:,1).^2 + P(:,2).^2;`

Define 10 random query points.

`Pq = -2 + 4*gallery('uniformdata',[10 2],1);`

Perform nearest-neighbor interpolation on `V` using the triangulation, `DT`. Use `nearestNeighbor` to find the indices of the nearest-neighbor vertices, `vi`, for the set of query points, `Pq`. Then examine the specific values of `V` at the indices.

```vi = nearestNeighbor(DT,Pq); Vq = V(vi)```
```Vq = 10×1 5.3163 0.3453 4.3026 1.2579 1.9435 5.9194 3.9030 0.4172 11.7282 0.8641 ```

### Linear Interpolation Using a delaunayTriangulation Query

This example shows how to perform linear interpolation on a scattered set of points with a specific Delaunay triangulation.

You can use the `triangulation` method, `pointLocation`, to compute the enclosing triangle of a query point and the magnitudes of the vertex weights. The weights are called barycentric coordinates, and they represent a partition of unity. That is, the sum of the three weights equals 1. The interpolated value of a function, V, at a query point is the sum of the weighted values of V at the three vertices. That is, if the function has values, V1, V2, V3 at the three vertices, and the weights are B1, B2, B3, then the interpolated value is (V1)(B1) + (V2)(B2) + (V3)(B3).

Create a `delaunayTriangulation` of a set of scattered points in 2-D.

```P = -2.5 + 5*gallery('uniformdata',[50 2],0); DT = delaunayTriangulation(P)```
```DT = delaunayTriangulation with properties: Points: [50x2 double] ConnectivityList: [87x3 double] Constraints: [] ```

Sample a parabolic function, V(x,y), at the points in `P`.

`V = P(:,1).^2 + P(:,2).^2;`

Define 10 random query points.

`Pq = -2 + 4*gallery('uniformdata',[10 2],1);`

Find the triangle that encloses each query point using the `pointLocation` method. In the code below, `ti` contains the IDs of the enclosing triangles and `bc` contains the barycentric coordinates associated with each triangle.

`[ti,bc] = pointLocation(DT,Pq);`

Find the values of V(x,y) at the vertices of each enclosing triangle.

`triVals = V(DT(ti,:));`

Calculate the sum of the weighted values of V(x,y) using the dot product.

`Vq = dot(bc',triVals')'`
```Vq = 10×1 5.9456 1.1222 4.7963 0.9373 2.3533 3.4219 2.3104 0.7728 8.0479 1.0886 ```