]> git.scottworley.com Git - nt3d/commitdiff
Fix a bug in project()
authorScott Worley <ScottWorley@ScottWorley.com>
Tue, 25 Dec 2012 04:53:07 +0000 (20:53 -0800)
committerScott Worley <ScottWorley@ScottWorley.com>
Tue, 25 Dec 2012 04:53:07 +0000 (20:53 -0800)
It was kind of sheer luck that any extrudes worked before this fix.

Also, add rotation to torus_by_extrude, which was an easy way to
reproduce this.

nt3d.js
torus_by_extrude.html

diff --git a/nt3d.js b/nt3d.js
index c69c185362a1411aa0ebfa604699f951a194c338..fd57824388105fcb27341886c2eea12261f44813 100644 (file)
--- a/nt3d.js
+++ b/nt3d.js
@@ -211,7 +211,7 @@ nt3d = {
        },
        project: function(a, b) { // Project b onto a
                var a_magnitude = this.magnitude(a);
-               return this.scale(a, this.dot(a, b) / a_magnitude * a_magnitude);
+               return this.scale(a, this.dot(a, b) / (a_magnitude * a_magnitude));
        },
        project_to_orthogonal: function(a, b) {
                // The nearest thing to b that is orthogonal to a
index 4655519cecec47c5551f511a4d10db268536f106..10ae92e50c7bdaaa3f1c3ab0ecd9d570c8c394d3 100644 (file)
@@ -3,8 +3,9 @@
     <title>Torus by extrude</title>
     <script type="text/javascript" src="nt3d.js"></script>
     <script type="text/javascript">
-      function torus_by_extrude(torus_radius, cross_section_radius, long_steps, short_steps) {
+      function torus_by_extrude(torus_radius, cross_section_radius, rotation, long_steps, short_steps) {
        var path = nt3d.circle(torus_radius, long_steps);
+       path = nt3d.rotate_about_origin(path, [0,1,0], rotation * 2*Math.PI);
        return nt3d.closed_extrude(
          path,
          nt3d.circle(cross_section_radius, short_steps),
@@ -13,6 +14,7 @@
       }
       var params = [["Torus radus", 100],
                     ["Cross section radius", 40],
+                    ["Rotation (turns)", 0.001],
                     ["Steps around the long way", 50],
                     ["Steps around the short way", 16]];
     </script>