From c6b41fe65f478d1c4184f54b2c75dd21ca22930e Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Fri, 20 Oct 2017 22:24:56 +0100 Subject: [PATCH] poster-tube-lid: wip new shape (unfinished, ball[02] is wrong) --- poster-tube-lid-parametric.scad.pl | 34 ++++++++++++++++++------------ 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/poster-tube-lid-parametric.scad.pl b/poster-tube-lid-parametric.scad.pl index bbe70d9..a6ffaf2 100755 --- a/poster-tube-lid-parametric.scad.pl +++ b/poster-tube-lid-parametric.scad.pl @@ -17,7 +17,7 @@ my $jcurverad = 5; my $tall = 50; my $lin_len = 4; -my $sine_size = 10; +my $sine_size = 5; my $sine_angle = 1.2 * TAU/8; my $ballend_xr = $thick/2; @@ -49,11 +49,13 @@ my @j_sections = qw(lin0 2 sub point ($$$$) { my ($ip,$it, $jp,$jt) = @_; - my ($i_offset, $i_outward); + my ($i_offset); - $i_outward = V( 0, - ($ip =~ m/0$/ ? -1 : +1), - 0 ); + my $i_outward = V( 0, + ($ip =~ m/0$/ ? -1 : +1), + 0 ); + + my $i_j_y_angle = 0; my $i_thickscale = 1.0; my $sine_len = $sine_size * sin($sine_angle); @@ -70,22 +72,28 @@ sub point ($$$$) { 0 ); } elsif ($ip =~ m/^sine[01]$/) { my $angle = $it * $sine_angle; - $i_offset = V( -$sine_size * sin($angle) -$lin_len, + $i_offset = V( -$lin_len -$sine_size * sin($angle), 0, +$sine_size * (1 - cos($angle)) ); + $i_j_y_angle = $angle; } elsif ($ip =~ m/^ball[02]$/) { + $i_j_y_angle = $sine_angle; my $angle = $it * TAU/4; my $dx = sin($angle) * $ballend_xr; $i_offset = V( -$lin_len -$sine_len - $dx, 0, - +$sine_height + $dx * tan($sine_angle) + +$sine_height ); $i_thickscale = cos($angle); } else { die "$ip ?"; } + $i_j_y_vect = V( sin($i_j_y_angle), + 0, + cos($i_j_y_angle )); + my $j_plus_th = $jp =~ m/2$/ ? $thick : 0; my $i_thick = $thick * $i_thickscale; @@ -122,18 +130,18 @@ sub point ($$$$) { die "$jp ?"; } - if ($i_offset->[0] < 0) { - my $base = $large_dia/2 + 3.0*($large_dia - $small_dia)/2; - $i_offset->[0] *= - ($base - $j_x) / - ($base - $small_dia/2); + $j_y -= $j_qrc_y; + + if ($j_y > 0) { + $i_j_y_vect = V(0,0,1); } # print STDERR "@_ $j_x $j_y $i_offset $i_outward\n"; return $i_offset + $j_x * $i_outward + - V(0,0,1) * $j_y + + $i_j_y_vect * $j_y + + V(0,0,1) * $j_qrc_y + V(0,0,-$tall) ; } -- 2.30.2