]> git.scottworley.com Git - nt3d/commitdiff
Quadstrips
authorScott Worley <ScottWorley@ScottWorley.com>
Tue, 18 Dec 2012 09:14:42 +0000 (01:14 -0800)
committerScott Worley <ScottWorley@ScottWorley.com>
Tue, 18 Dec 2012 09:14:42 +0000 (01:14 -0800)
box_by_quadstrip.html [new file with mode: 0644]
nt3d.js

diff --git a/box_by_quadstrip.html b/box_by_quadstrip.html
new file mode 100644 (file)
index 0000000..1c6f8fa
--- /dev/null
@@ -0,0 +1,28 @@
+<html>
+  <head>
+    <title>Box by quadstrip</title>
+    <script type="text/javascript" src="nt3d.js"></script>
+    <script type="text/javascript">
+      function box_by_quadstrip(size_as_string) {
+        var size = parseFloat(size_as_string);
+        var origin = [0,    0,    0   ];
+        var x      = [size, 0,    0   ];
+        var y      = [0,    size, 0   ];
+        var z      = [0,    0,    size];
+        var xy     = [size, size, 0   ];
+        var xz     = [size, 0,    size];
+        var yz     = [0,    size, size];
+        var xyz    = [size, size, size];
+       return [].concat(
+         nt3d.quad(origin, y, xy, x), // bottom
+         nt3d.quad(z, xz, xyz, yz),   // top
+         nt3d.closed_quadstrip([origin, z, y, yz, xy, xyz, x, xz]));
+      }
+      var params = [["Size", 1]];
+    </script>
+  </head>
+  <body onload="nt3d.framework(box_by_quadstrip, params)">
+    <h1>Box by quadstrip</h1>
+    <p>Make a box with a top, bottom, and a quadstrip for the sides.</p>
+  </body>
+</html>
diff --git a/nt3d.js b/nt3d.js
index 9d45486c32095235f9c423453b78b28acd193247..ba2315fd777ad28c43ac0dd956a33f967739cb8e 100644 (file)
--- a/nt3d.js
+++ b/nt3d.js
@@ -23,6 +23,19 @@ nt3d = {
                return this.triangle(a, b, c).concat(
                       this.triangle(c, d, a));
        },
                return this.triangle(a, b, c).concat(
                       this.triangle(c, d, a));
        },
+       quadstrip: function(strip) {
+               if (strip.length % 2 != 0) {
+                       alert("quadstrip length not divisble by 2!");
+               }
+               var result = [];
+               for (var i = 2; i < strip.length; i += 2) {
+                       result = result.concat(nt3d.quad(strip[i-2], strip[i-1], strip[i+1], strip[i]));
+               }
+               return result;
+       },
+       closed_quadstrip: function(strip) {
+               return nt3d.quadstrip(strip).concat(nt3d.quad(strip[strip.length-2], strip[strip.length-1], strip[1], strip[0]));
+       },
        sub: function(a, b) {
                return [a[0] - b[0],
                        a[1] - b[1],
        sub: function(a, b) {
                return [a[0] - b[0],
                        a[1] - b[1],