--- /dev/null
+<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>
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],