### 3 releases

0.1.2 | Jan 30, 2023 |
---|---|

0.1.1 | Jan 30, 2023 |

0.1.0 | Jan 30, 2023 |

#**121** in Games

**MIT**license

34KB

517 lines

# marching-cubes

A Rust implementation of the marching cubes algorithm for extracting isosurfaces from 3D volumetric data.

## Features

- Fast and efficient
- Commonly used in computer graphics, medical imaging, and scientific visualization

## Examples

`use` `marching_cubes``::``{`MarchingCubes`,` GridCell`,` Triangle`}``;`
`let` grid `=` GridCell `{`
positions`:` `[`
`[``0.``0``,` `0.``0``,` `0.``0``]``,`
`[``1.``0``,` `0.``0``,` `0.``0``]``,`
`[``1.``0``,` `1.``0``,` `0.``0``]``,`
`[``0.``0``,` `1.``0``,` `0.``0``]``,`
`[``0.``0``,` `0.``0``,` `1.``0``]``,`
`[``1.``0``,` `0.``0``,` `1.``0``]``,`
`[``1.``0``,` `1.``0``,` `1.``0``]``,`
`[``0.``0``,` `1.``0``,` `1.``0``]`
`]``,`
value`:` `[``0.``0``,` `0.``5``,` `0.``5``,` `1.``0``,` `0.``0``,` `1.``0``,` `1.``0``,` `0.``0``]``,`
`}``;`
`let` `mut` triangles `=` `vec!``[``]``;`
`let` isolevel `=` `0.``5``;`
`let` mc `=` `MarchingCubes``::`new`(`isolevel`,` grid`)``;`
`let` triangle_count `=` mc`.``polygonise``(``&``mut` triangles`)``;`
`assert_eq!``(`triangle_count`,` `4``)``;`

## Usage

The

struct is the main entry point to the library.`MarchingCubes`

- The

method creates a new instance of the algorithm and takes two arguments: the 3D volumetric data as a nested array of scalar values and the isovalue used to extract the isosurface.`new` - The

method executes the algorithm and returns the resulting vertices as a vector of 3D points.`polygonise`

Note: The example code uses a 4x4x4 volume for simplicity, but in practice the volume size can be much larger and the algorithm will scale accordingly.

#### No runtime deps

#### Features

- glam