X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=reprap-play.git;a=blobdiff_plain;f=distort-stl;h=9d8569062b193e10413a3c91e643feeed4f633b9;hp=a470ae39c68a34965ea9fd5f5a3c0e66ddcf6a71;hb=5a70ee766ba90791aaedd28a4bdf9fe9b9fc45fd;hpb=c1500ad488993e64e90ddd5aeb58ce75d91a889e diff --git a/distort-stl b/distort-stl index a470ae3..9d85690 100755 --- a/distort-stl +++ b/distort-stl @@ -32,6 +32,8 @@ use Data::Dumper; sub TAU () { M_PI * 2; } +our $debug = $ENV{DISTORT_DEBUG}; + my $ps = $ENV{DISTORT_PS}; if ($ps) { open PS, "> $ps" or die $!; @@ -53,6 +55,8 @@ sub shift_arg () { sub sprintf_triangle ($) { my ($t) = @_; + return '' unless $debug; + if ($ps && $t->[3] =~ m/$ENV{DISTORT_PS_RE}/) { printf PS <<'END', %20.16g %20.16g %20.16g moveto @@ -80,7 +84,7 @@ END sub maybe_subdivide_triangle ($$$$) { my ($t, $ok, $changed, $edge_need_subdivide_fn) = @_; - print STDERR sprintf_triangle $t; + print STDERR sprintf_triangle $t if $debug; foreach my $ix (0..2) { my $jx = ($ix+1) % 3; @@ -88,7 +92,8 @@ sub maybe_subdivide_triangle ($$$$) { if ($edge_need_subdivide_fn->($t->[$ix], $t->[$jx])) { printf STDERR " S i=%d j=%d k=%d ", - $ix, $jx, $kx; + $ix, $jx, $kx + if $debug; my @midp; foreach my $ci (0..2) { push @midp, 0.5 * ($t->[$ix][$ci] + $t->[$jx][$ci]); @@ -96,26 +101,28 @@ sub maybe_subdivide_triangle ($$$$) { printf STDERR " midp %11.6f,%11.6f,%11.6f\n", - @midp; + @midp + if $debug; # triangle i-j-k, splitting edge i-m # gives i-m-k, k-m-j - my $n = [ @$t ]; $n->[$ix] = \@midp; $n->[3] = "$t->[3]a$ix$jx"; - unshift @$changed, $n; - - printf STDERR "%s\n", sprintf_triangle $n; - - my $n = [ @$t ]; $n->[$jx] = \@midp; $n->[3] = "$t->[3]b$ix$jx"; - unshift @$changed, $n; - - printf STDERR "%s\n", sprintf_triangle $n; - + my $gensplit = sub { + my ($ixjx, $xwhat) = @_; + my $n = [ @$t ]; + $n->[$ixjx] = \@midp; + $n->[3] = "$t->[3]$xwhat"; + printf STDERR "%s\n", sprintf_triangle $n if $debug; + unshift @$changed, $n; + }; + $gensplit->($ix, "a$ix$jx"); + $gensplit->($jx, "b$ix$jx"); return; } } push @$ok, $t; printf STDERR "OK nok=%d nchanged=%d\n", - (scalar @$ok), (scalar @$changed); + (scalar @$ok), (scalar @$changed) + if $debug; } sub maybe_subdivide ($) {