barycentric-coordinates

0.0.7 • Public • Published

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

stonks

Package Sidebar

Install

npm i barycentric-coordinates

Weekly Downloads

20

Version

0.0.7

License

CC0-1.0

Unpacked Size

15.5 kB

Total Files

6

Last publish

Collaborators

  • stonkpunk