use List::Util;
use POSIX;
use File::Temp ();
+use Data::Dumper;
sub TAU () { M_PI * 2; }
#---------- main program ----------
-if (@ARGV && $ARGV[0] =~ m/^-/) {
- die "no options supported\n";
-}
+our $raw;
-my $itmp = new File::Temp;
-my $otmp = new File::Temp;
+while (@ARGV && $ARGV[0] =~ m/^-/) {
+ $_ = shift @ARGV;
+ last if m/^--$/;
+ if (s/^--raw$//) {
+ $raw = 1;
+ } else {
+ die "$_ ?";
+ }
+}
-system "cat >$itmp";
+my $itmp;
+my $otmp;
my $admesh_stdout = '--write-ascii-stl /dev/fd/3 3>&1 >/dev/null';
-open I, "admesh $admesh_stdout $itmp |";
+if ($raw) {
+ open I, "<& STDIN";
+ $otmp = *STDOUT;
+} else {
+ $itmp = new File::Temp;
+ $otmp = new File::Temp;
+
+ system "cat >$itmp";
+
+ open I, "admesh $admesh_stdout $itmp |";
+}
my $triangle;
foreach my $t (@triangles) {
print " facet normal 0 0 0\n";
print " outer loop\n";
- print " vertex";
- printf " %.18g", $_ foreach @$t;
- print "\n";
+ foreach my $p (@$t) {
+ print " vertex";
+ printf " %.18g", $_ foreach @$p;
+ print "\n";
+ }
print " endloop\n";
print " endfacet\n";
}
flush $otmp;
-system "admesh --normal-values $admesh_stdout $otmp";
+if (!$raw) {
+ system "admesh --normal-values $admesh_stdout $otmp";
+}