X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=distort-stl;fp=distort-stl;h=7a0ebeec8a7a36ac80c8046d5c526886d22fc10c;hb=807ba5b3024fb82823d2f3fb9dafa1702470e56a;hp=cc03ec5e7aea0776a516e12f900159adbdb2fb6f;hpb=6db9e531dbae0b0a6d381509788b1f386dcef0bc;p=reprap-play.git diff --git a/distort-stl b/distort-stl index cc03ec5..7a0ebee 100755 --- a/distort-stl +++ b/distort-stl @@ -121,14 +121,18 @@ sub op__project_cylinder () { $project_cylinder_radius = shift_arg; $project_cylinder_max_d_theta = $fa * TAU/360; - while (project_cylinder_need_subdivide()) { - $output = []; - foreach my $t (@$triangles) { + my @small_enough = (); + while (my $t = shift @$triangles) { + if (!project_cylinder_triangle_need_subdivide $t) { + push @small_enough, $t; + } else { + local $output = $triangles; subdivide_triangle $t, \&append_triangle; } - $triangles = $output; } + $triangles = \@small_enough; + $output = []; foreach my $t (@$triangles) { project_cylinder_tri $t;