subdivision3d {rgl} | R Documentation

## generic subdivision surface method

### Description

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).

### Usage

      subdivision3d( x,  ...)
      ## S3 method for class '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 )

### Arguments

`x` | 3d geometry mesh
`mesh` | 3d geometry mesh
`depth` | recursion depth
`normalize` | normalize mesh3d coordinates after division if `deform` is `TRUE`
`deform` | deform mesh
`it` | indices for triangular faces
`ib` | indices for quad faces
`vb` | matrix of vertices: 4xn matrix (rows x, y, z, h) or equivalent vector, where h indicates scaling of each plotted quad
`...` | other arguments (unused)

### Details

`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.)

### See Also

`r3d` `mesh3d`

### Examples

      open3d()
      shade3d( subdivision3d( cube3d(), depth = 3 ), color = "red", alpha = 0.5 )

[Package rgl version 0.100.19 Index]