# vertexNormal

Class: triangulation

Triangulation vertex normal

## Syntax

`VN = vertexNormal(TR,vi)VN = vertexNormal(TR)`

## Description

`VN = vertexNormal(TR,vi)` returns the unit normal vector to each of the specified vertices in `vi`.

`VN = vertexNormal(TR)` returns the normal information for all vertices in the triangulation.

## Input Arguments

 `TR` Triangulation representation, see `triangulation` or `delaunayTriangulation`. `vi` IDs of vertices to query, specified as a column vector. Each element in `vi` is a Vertex ID.

## Output Arguments

 `VN` Vertex normals, returned a matrix. Each row, `VN(j,:)`, is the unit normal vector at the vertex `vi(j)`. The vector at `VN(j,:)` is the average unit normal of the faces attached to vertex `vi(j)`. If you do not specify `vi`, then `vertexNormal` returns the unit normal information for all vertices in the triangulation. In this case, the normal associated with `TR.Points(j,:)` is `VN(j,:)`.

## Definitions

### Vertex ID

A row number of the matrix, `TR.Points`. Use this ID to refer a specific vertex in the triangulation.

## Examples

expand all

### Unit Normal Vectors to the Surface of a Cube

Create a 3-D triangulation representing the volume of a cube.

```[X,Y,Z] = meshgrid(1:4); X = X(:); Y = Y(:); Z = Z(:); dt = delaunayTriangulation(X,Y,Z); ```

Find the surfaces of the cube and isolate them in a 2-D triangulation.

```[Tfb,Xfb] = freeBoundary(dt); TR = triangulation(Tfb,Xfb); ```

Find the unit normal vectors to the triangles on the surface of the cube.

```vn = vertexNormal(TR); ```

Plot the results.

```trisurf(TR,'FaceColor', [0.8 0.8 1.0]); axis equal hold on quiver3(Xfb(:,1),Xfb(:,2),Xfb(:,3),... vn(:,1),vn(:,2),vn(:,3),0.5,'color','b'); hold off ```