`subdivision3d.Rd`

The subdivision surface algorithm divides and refines (deforms) a given mesh recursively to certain degree (depth). The mesh3d algorithm consists of two stages: divide and deform. The divide step generates for each triangle or quad four new triangles or quads, the deform step drags the points (refinement step).

```
subdivision3d( x, ...)
# S3 method for mesh3d
subdivision3d( x, depth = 1, normalize = FALSE, deform = TRUE, ... )
divide.mesh3d(mesh, vb = mesh$vb, ib = mesh$ib, it = mesh$it )
normalize.mesh3d(mesh)
deform.mesh3d(mesh, vb = mesh$vb, ib = mesh$ib, it = mesh$it )
```

x | 3d geometry mesh |
---|---|

mesh | 3d geometry mesh |

depth | recursion depth |

normalize | normalize mesh3d coordinates after division if |

deform | deform mesh |

it | indices for triangular faces |

ib | indices for quad faces |

vb | matrix of vertices: 4 x n matrix (rows x, y, z, h) or equivalent vector, where h indicates scaling of each plotted quad |

... | other arguments (unused) |

`subdivision3d`

takes
a mesh object and replaces each triangle or quad with 4 new ones
by adding vertices half-way along the edges (and one in the
centre of a quad). The positions of the vertices are
deformed so that the resulting surface is smoother than the original. These operations are repeated `depth`

times.

The other functions do the individual steps of the subdivision.
`divide.mesh3d`

adds the extra vertices. `deform.mesh3d`

does the smoothing by replacing each vertex with the average of each of its neighbours. `normalize.mesh3d`

normalizes the homogeneous coordinates, by setting the
4th coordinate to 1. (The 4th coordinate is used as a
weight in the deform step.)