# Isosurface

An **isosurface** is a three-dimensional analog of an isoline. It is a surface that represents points of a constant value (e.g. pressure, temperature, velocity, density) within a volume of space; in other words, it is a level set of a continuous function whose domain is 3D-space.

## Contents

## Applications[edit]

Isosurfaces are normally displayed using computer graphics, and are used as data visualization methods in computational fluid dynamics (CFD), allowing engineers to study features of a fluid flow (gas or liquid) around objects, such as aircraft wings. An isosurface may represent an individual shock wave in supersonic flight, or several isosurfaces may be generated showing a sequence of pressure values in the air flowing around a wing. Isosurfaces tend to be a popular form of visualization for volume datasets since they can be rendered by a simple polygonal model, which can be drawn on the screen very quickly.

In medical imaging, isosurfaces may be used to represent regions of a particular density in a three-dimensional CT scan, allowing the visualization of internal organs, bones, or other structures.

Numerous other disciplines that are interested in three-dimensional data often use isosurfaces to obtain information about pharmacology, chemistry, geophysics and meteorology.

## Implementation Algorithms[edit]

### Marching Cubes[edit]

The marching cubes algorithm was first published in the 1987 SIGGRAPH proceedings by Lorensen and Cline,^{[1]} and it creates a surface by intersecting the edges of a data volume grid with the volume contour. Where the surface intersects the edge the algorithm creates a vertex. By using a table of different triangles depending on different patterns of edge intersections the algorithm can create a surface. This algorithm has solutions for implementation both on the CPU and on the GPU.

### Asymptotic Decider[edit]

The asymptotic decider algorithm was developed as an extension to marching cubes in order to resolve the possibility of ambiguity in it.

### Marching Tetrahedrons[edit]

The marching tetrahedrons algorithm was developed as an extension to marching cubes in order to solve an ambiguity in that algorithm and to create higher quality output surface.

### Surface Nets[edit]

The Surface Nets algorithm places an intersecting vertex in the middle of a volume voxel instead of at the edges, leading to a smoother output surface.

### Dual Contouring[edit]

The dual contouring algorithm was first published in the 2002 SIGGRAPH proceedings by Ju and Losasso,^{[2]} developed as an extension to both surface nets and marching cubes. It retains the vertex at the center of the voxel but adds a surface generation that leverages octrees to add support for geometry that adapts the number of triangles in output to the complexity of the surface.

## Examples[edit]

Examples of isosurfaces are 'Metaballs' or 'blobby objects' used in 3D visualisation. A more general way to construct an isosurface is to use the function representation.

## See also[edit]

## References[edit]

**^**William E. Lorensen, Harvey E. Cline: Marching Cubes: A high resolution 3D surface construction algorithm. In: Computer Graphics, Vol. 21, Nr. 4, July 1987**^**Tao Ju, Frank Losasso, Scott Schaefer, Joe Warren: Dual Contouring of Hermite Data. In: ACM Transactions on Graphics, Volume 21 Issue 3, July 2002

- Charles D. Hansen; Chris R. Johnson (2004).
*Visualization Handbook*. Academic Press. pp. 7–11. ISBN 978-0-12-387582-2.

## External links[edit]

- Isosurface Polygonization
- The contourist package for numeric python generates triangulations of isosurfaces for arbitrary 3 dimensional functions which can be displayed using HTML5 as illustrated in this jsfiddle