computeContour3d: Compute Isosurface, a Three Dimension Contour
Description
Computes a 3D contours or isosurface by the marching cubes algorithm.
Usage
computeContour3d(vol, maxvol = max(vol), level,
x = 1:dim(vol)[1],
y = 1:dim(vol)[2],
z = 1:dim(vol)[3], mask)
Value
A matrix of three columns representing the triangles making up the
contour surface. Each row represents a vertex and goups of three
rows represent a triangle.
Arguments
vol
a three dimensional array.
maxvol
maximum of the vol array.
level
The level at which to construct the contour surface.
x,y,z
locations of grid planes at which values in vol are
measured.
mask
a function of 3 arguments returning a logical array, a
three dimensional logical array, or NULL. If not
NULL, only cells for which mask is true at all eight
vertices are used in forming the contour.
Details
Uses the marching-cubes algorithm, with adjustments for dealing with
face and internal ambiguities, to compute an isosurface.
See references for the details. The function
contour3d provides a higher-level interface.
References
Chernyaev E. (1995)
Marching Cubes 33: Construction of Topologically Correct Isosurfaces
Technical Report CN/95-17, CERN
Lorensen W. and Cline H. (1987)
Marching Cubes: A High Resolution 3D Surface Reconstruction Algorithm
Computer Graphicsvol. 21, no. 4, 163-169
Nielson G. and Hamann B. (1992)
The Asymptotic Decider: Resolving the Ambiguity in Marching Cubes
Proc. IEEE Visualization92, 83-91
x <- seq(-2,2,len=50)
g <- expand.grid(x = x, y = x, z = x)
v <- array(g$x^4 + g$y^4 + g$z^4, rep(length(x),3))
con <- computeContour3d(v, max(v), 1)
drawScene(makeTriangles(con))