# surfaceNormals: Normal vectors computation In alphashape3d: Implementation of the 3D Alpha-Shape for the Reconstruction of 3D Sets from a Point Cloud

## Description

This function calculates the normal vectors of all the triangles which belong to the boundary of the α-shape.

## Usage

 ```1 2``` ```surfaceNormals(x, indexAlpha = 1, display = FALSE, col = 3, scale = 1, ...) ```

## Arguments

 `x` An object of class `"ashape3d"` that represents the α-shape of a given sample of points in the three-dimensional space, see `ashape3d`. `indexAlpha` A single value or vector with the indexes of `as3d\$alpha` that should be used for the computation, see Details. `display` Logical, if TRUE, `surfaceNormals` open a new rgl device and display the related α-shape and its normals vectors. `col` Color of the normal vectors. `scale` Scale parameter to control the length of the surface normals, only affect display. `...` Material properties. See `rgl.material` for details.

## Details

The function `surfaceNormals` computes the normal vectors of all the triangles which belong to the boundary of the α-shape for each value of α in `x\$alpha[indexAlpha]`. The magnitude of each vector is equal to the area of its associated triangle.

If `indexAlpha="all"` or `indexAlpha="ALL"` then the function computes the normal vectors for all values of α in `as3d\$alpha`.

## Value

If `indexAlpha` is a single value then the function returns an object of class `"normals"` with the following components:

 `normals` Three-column matrix with the euclidean coordinates of the normal vectors. `centers` Three-column matrix with the euclidean coordinates of the centers of the triangles that form the α-shape.

Otherwise `surfaceNormals` returns a list of class `"normals-List"` (each object in the list as described above).

`ashape3d`
 ```1 2 3 4``` ```x <- rtorus(1000, 0.5, 1) alpha <- 0.25 ashape3d.obj <- ashape3d(x, alpha = alpha) surfaceNormals(ashape3d.obj, display = TRUE) ```