chiark / gitweb /
air-hockey-puck: wip
[reprap-play.git] / treefoil.scad.pl
index 82b0c59b0feb8058b690f82d038edcdffc01e88a..ef9ef2614c83c9f25ad4e79c8080e8dc479ee7a5 100755 (executable)
@@ -1,5 +1,8 @@
 #!/usr/bin/perl -w
 
+# Use:
+#   - support X/Y dist 0.5mm
+
 use strict;
 
 our $shape = <<'END';
@@ -7,6 +10,12 @@ xyyZZYYXYxxyzYYZXzzxyXXYXXXZxxxyyXXZyyyzXXzz
 zxxYYXXZXzzxyXXYZyyzxZZXZZZYzzzxxZZYxxxyZZyy
 yzzXXZZYZyyzxZZXYxxyzYYZYYYXyyyzzYYXzzzxYYxx
 END
+# simple version (unknotted, [0,1,2]^3):
+# YxxyzYYZXzzxyXXYZyyzxZZX
+#
+# New and less symmetric one that also fits in the 2x2x2 box:
+# YXXyzzYxYXZZxzyxYzyyZXZx
+# (email 8.9.2022)
 
 sub o { print @_ or die $!; }
 
@@ -37,7 +46,9 @@ while (<DATA>) { o $_ }
 
 __DATA__
 
-thick = 8;
+thick = 6;
+edgeu = 10;
+//edgeu = 15;
 
 // calculated
 
@@ -45,12 +56,24 @@ octa_long = thick;
 octa_short = octa_long / (1 + sqrt(2));
 
 module OctaThing() {
-    foreach (r = [[0,0,0], [90,0,0], [0,90,0]]) {
-       rotate(r)
-           cube([ octa_short,octa_short, octa_long ], center=true);
+    hull(){
+       for (r = [[0,0,0], [90,0,0], [0,90,0]]) {
+           rotate(r)
+               cube([ octa_short,octa_short, octa_long ], center=true);
+       }
+    }
+}
+
+module TraceEdge(p,q) {
+    hull(){
+        for (x=[p,q]) {
+            translate(x * edgeu)
+                OctaThing();
+        }
     }
 }
 
-OctaThing();
+rotate([0,0,45])
+  Trace();