From 4e2bdb62f6ca8a3a42462f056fdd55bedb41b1e1 Mon Sep 17 00:00:00 2001 From: Scott Worley <ScottWorley@ScottWorley.com> Date: Tue, 18 Dec 2012 01:14:42 -0800 Subject: [PATCH] Quadstrips --- box_by_quadstrip.html | 28 ++++++++++++++++++++++++++++ nt3d.js | 13 +++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 box_by_quadstrip.html diff --git a/box_by_quadstrip.html b/box_by_quadstrip.html new file mode 100644 index 0000000..1c6f8fa --- /dev/null +++ b/box_by_quadstrip.html @@ -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 9d45486..ba2315f 100644 --- a/nt3d.js +++ b/nt3d.js @@ -23,6 +23,19 @@ nt3d = { 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], -- 2.47.2