simplicial-complex-contour
v1.0.2
Published
Extract a contour on a simplicial complex
Downloads
115,123
Maintainers
Readme
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')
//Solve for the curve z=0 on the surface of the bunny
var zvalues = bunny.positions.map(function(p) {
return p[2]
})
var curve = extractContour(bunny.cells, zvalues, 0.0)
//Unpack edges and positions of curve
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]
]
})
//Render the curve
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