Package Exports
- barycentric-coordinates
- barycentric-coordinates/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (barycentric-coordinates) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
barycentric-coordinates
get barycentric coordinates for triangle and tetrahedron, convert to/from cartesian coordinates, interpolate vertex normals
Installation
npm i barycentric-coordinates
Usage
var bc = require('barycentric-coordinates');
//triangle is 3 pts [x,y,z]
var triangle = [[0,0,1],[1,0,1],[1,1,1]];
//tetrahedron is 4 pts [x,y,z]
var tetrahedron = [[0,0,1],[1,0,1],[1,1,1],[1,1,0]];
//3d pt in space, cartesian coords
//note -- for correct triangular barycentric coordinates, the point must be in the same plane as the triangle!
// but if you only want tetrahedral barycentric coordinates, the position of the point does not matter.
var pt = [2.0/3.0, 1.0/3.0, 1.0]; //here we pick the point in the middle of the triangle
//get barycentric coordinates...
var triBaryCoords = bc.triangleBarycentricCoords(pt,triangle);
var tetraBaryCoords = bc.tetrahedronBarycentricCoords(pt,tetrahedron);
console.log("cartesian",pt); //[ 0.667, 0.333, 1.0]
console.log("barycentric",triBaryCoords); //[ 0.333, 0.333, 0.333]
console.log("barycentric",tetraBaryCoords); //[ 0.333, 0.333, 0.333, 0.0]
//convert back to cartesian from barycentric...
var triCartesianCoords = bc.triangleCartesianCoords(triBaryCoords, triangle);
var tetraCartesianCoords = bc.tetrahedronCartesianCoords(tetraBaryCoords, tetrahedron);
console.log("cartesian",triCartesianCoords); //[ 0.667, 0.333, 1.0]
console.log("cartesian",tetraCartesianCoords); //[ 0.667, 0.333, 1.0]
//can also use barycoords to interpolate vertex normals or UVs. each normal has same format as one of the triangle pts. UVs are similar but dont have a third coordinate.
//triangleInterpolateNormals(pt, tri, normalA, normalB, normalC)
//triangleInterpolateUVs((pt, tri, uvA, uvB, uvC)
See Also
- tetrahedron-distance - distance to tetrahedron