]> git.scottworley.com Git - nt3d/blobdiff - nt3d.js
Helper functions for shapenormals
[nt3d] / nt3d.js
diff --git a/nt3d.js b/nt3d.js
index 9b09b09532e233aa5b450130bd36d4bd43be02e2..9c4aeb18693000a43267508722918b30c6cdfe80 100644 (file)
--- 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.