chiark / gitweb /
treefoi: more
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 27 Jan 2019 18:35:36 +0000 (18:35 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 27 Jan 2019 18:35:36 +0000 (18:35 +0000)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
treefoil.scad.pl [changed mode: 0644->0755]

old mode 100644 (file)
new mode 100755 (executable)
index 3bf4012..b1ceecb
@@ -1,4 +1,38 @@
-__DATA__
+#!/usr/bin/perl -w
+
+use strict;
+
+our $shape = <<'END';
 xyyZZYYXYxxyzYYZXzzxyXXYXXXZxxxyyXXZyyyzXXzz
 zxxYYXXZXzzxyXXYZyyzxZZXZZZYzzzxxZZYxxxyZZyy
 yzzXXZZYZyyzxZZXYxxyzYYZYYYXyyyzzYYXzzzxYYxx
+END
+
+sub o { print @_ or die $!; }
+
+o <<'END';
+// -*- autogenerated, do not edit -*-
+
+module Trace() {
+END
+
+my @p = qw(0 0 0);
+
+$"=',';
+
+while ($shape =~ s/^\s*(\w)//) {
+    my $ix = index('xyz', (lc $1));
+    my $sign = $1 =~ /[A-Z]/ ? +1 : -1;
+    my @q = @p;
+    $q[$ix] += $sign;
+    o "    TraceEdge([@p],[@q]);\n";
+    @p = @q;
+}
+
+die @p unless "@p" eq '0,0,0';
+
+o "}\n\n";
+
+while (<DATA>) { o $_ }
+
+__DATA__