simplicial-complex-contour
Finds a piecewise-linear isocontour on a simplicial complex using the marching simplex method.
Example
var extractContour = require('simplicial-complex-contour')
var bunny = require('bunny')
var zvalues = bunny.positions.map(function(p) {
return p[2]
})
var curve = extractContour(bunny.cells, zvalues, 0.0)
var curveEdges = curve.cells
var curvePositions = curve.vertexWeights.map(function(w,i) {
var a = bunny.positions[curve.vertexIds[i][0]]
var b = bunny.positions[curve.vertexIds[i][1]]
return [
w * a[0] + (1 - w) * b[0],
w * a[1] + (1 - w) * b[1],
w * a[2] + (1 - w) * b[2]
]
})
console.log({
cells: curveEdges,
positions: curvePositions
})
Install
npm install simplicial-complex-contour
API
require('simplicial-complex-contour')(cells, values[, level])
Computes a piecewise linear solution to the solution values=levels
cells
is an array of simplices represented by tuples of vertex indicesvalues
is an array of values defined at each vertex of the cell complexlevel
is the level at which the surface is extracted (Default 0)
Returns An object with 3 properties
cells
which are the cells of the extracted isosurfacevertexIds
which is an array of pairs of vertex ids encoding the crossing edgesvertexWeights
which are linear weights applied to each vertex
Credits
(c) 2014 Mikola Lysenko. MIT License