X-Git-Url: http://git.scottworley.com/nt3d/blobdiff_plain/c92a9d3f963401b999f661dde190a739ebbeafde..4a6f6f14490c1c6f51843229d2d521368aa25c7f:/nt3d.js?ds=inline diff --git a/nt3d.js b/nt3d.js index fd57824..239b03c 100644 --- a/nt3d.js +++ b/nt3d.js @@ -83,6 +83,14 @@ nt3d = { return nt3d.sub(path[i+1], path[i-1]); }; }, + pathnormals_from_point: function(path, p) { + // Use this with any point that is not on any path tangent line + var pathnormals = []; + for (var i = 0; i < path.length; i++) { + pathnormals.push(this.sub(path[i], p)); + } + return pathnormals; + }, to_function: function(thing, make_indexer) { // If thing is a point, just yield thing every time. // If thing is a list of points && make_indexer, index into thing. @@ -220,12 +228,15 @@ nt3d = { translate: function(points, offset) { var translated = []; for (var i = 0; i < points.length; i++) { - translated[i] = [points[i][0] + offset[0], - points[i][1] + offset[1], - points[i][2] + offset[2]]; + translated[i] = this.translate_point(points[i], offset); } return translated; }, + translate_point: function(point, offset) { + return [point[0] + offset[0], + point[1] + offset[1], + point[2] + offset[2]]; + }, angle_between: function(a, b) { // a and b must be unit vectors return Math.acos(this.dot(a, b)); },