From b4aef1195a0623723bd639ee4f34b5d28276b28f Mon Sep 17 00:00:00 2001 From: Justin Lin Date: Mon, 15 May 2017 08:46:18 +0800 Subject: [PATCH] refactored --- src/__private__/__half_trapezium.scad | 46 ++++++++++++++++----------- 1 file changed, 28 insertions(+), 18 deletions(-) diff --git a/src/__private__/__half_trapezium.scad b/src/__private__/__half_trapezium.scad index 45d2a0d2..b5911acd 100644 --- a/src/__private__/__half_trapezium.scad +++ b/src/__private__/__half_trapezium.scad @@ -1,27 +1,37 @@ +function __tr_corner(frags, l1, l2, h, round_r) = + let( + t_sector_angle = atan2(h, l1 - l2), + t_leng = l2 - round_r * tan(t_sector_angle / 2), + t_round_frags = frags * t_sector_angle / 360, + half_h = h / 2 + ) + [ + for(pt = __pie_for_rounding(round_r, 90 - t_sector_angle, 90, t_round_frags)) + [pt[0] + t_leng, pt[1] + h - round_r - half_h] + ]; + +function __br_corner(frags, l1, l2, h, round_r) = + let( + b_ang = atan2(h, l1 - l2), + b_sector_angle = 180 - b_ang, + b_leng = l1 - round_r / tan(b_ang / 2), + b_round_frags = frags * b_sector_angle / 360, + b_end_angle = -90 + b_sector_angle, + half_h = h / 2 + ) + [ + for(pt = __pie_for_rounding(round_r, -90, b_end_angle, b_round_frags)) + [pt[0] + b_leng, pt[1] + round_r - half_h] + ]; + function __half_trapezium(length, h, round_r) = let( is_vt = __is_vector(length), l1 = is_vt ? length[0] : length, l2 = is_vt ? length[1] : length, frags = __frags(round_r), - b_ang = atan2(h, l1 - l2), - b_sector_angle = 180 - b_ang, - b_leng = l1 - round_r / tan(b_ang / 2), - b_round_frags = frags * b_sector_angle / 360, - b_end_angle = -90 + b_sector_angle, - t_sector_angle = b_ang, - t_leng = l2 - round_r * tan(t_sector_angle / 2), - t_round_frags = frags * t_sector_angle / 360, - half_h = h / 2, - br_corner = [ - for(pt = __pie_for_rounding(round_r, -90, b_end_angle, b_round_frags)) - [pt[0] + b_leng, pt[1] + round_r - half_h] - ], - - tr_corner = [ - for(pt = __pie_for_rounding(round_r, 90 - t_sector_angle, 90, t_round_frags)) - [pt[0] + t_leng, pt[1] + h - round_r - half_h] - ] + br_corner = __br_corner(frags, l1, l2, h, round_r), + tr_corner = __tr_corner(frags, l1, l2, h, round_r) ) concat( br_corner,