X-Git-Url: http://git.scottworley.com/nt3d/blobdiff_plain/08c25ec8473e43e82a1291a528f8332239581483..2d38f7243be5d76cca2812428cc90d0009e672cb:/nt3d.js diff --git a/nt3d.js b/nt3d.js index 9b09b09..9c4aeb1 100644 --- a/nt3d.js +++ b/nt3d.js @@ -62,6 +62,27 @@ nt3d = { return this.closed_trianglefan([apex].concat(base)).concat( this.trianglefan(base.reverse())); }, + shapenormals_from_closed_path: function(path) { + return function(i) { + var prev = (i == 0) ? path.length-1 : i-1; + var next = (i == path.length-1) ? 0 : i+1; + return nt3d.sub(path[next], path[prev]); + }; + }, + shapenormals_from_path_and_extra_points: function(path, first_point, last_point) { + return function(i) { + var prev = (i == 0) ? first_point : path[i-1]; + var next = (i == path.length-1) ? last_point : path[i+1]; + return nt3d.sub(next, prev); + }; + }, + shapenormals_from_path_and_first_and_last_normals: function(path, first_normal, last_normal) { + return function(i) { + if (i == 0) { return first_normal; } + if (i == path.length-1) { return last_normal; } + return nt3d.sub(path[i+1], path[i-1]); + }; + }, 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.