From fabfd1a9ce638457a5538eaecd2826139efe61ce Mon Sep 17 00:00:00 2001 From: Justin Lin Date: Mon, 2 Aug 2021 15:02:15 +0800 Subject: [PATCH] add dragon_claw --- examples/dragon/dragon_claw.scad | 42 ++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 examples/dragon/dragon_claw.scad diff --git a/examples/dragon/dragon_claw.scad b/examples/dragon/dragon_claw.scad new file mode 100644 index 00000000..bb735eda --- /dev/null +++ b/examples/dragon/dragon_claw.scad @@ -0,0 +1,42 @@ +use ; +use ; +use ; +use ; + +module dragon_claw() { + pts = [ + [0, 0.55], [1, 0.45], [2.5, 0.375], [6, 0.825], [8, 0], + [8, 0.375], [6, 1.875], [4, 1.6], [1.8, 2.5], [1.5, 2.8], [1.2, 3.3], [1.05, 3.8], [1, 4], [0, 8] + ]; + + $fn = 16; + + a = 360 / $fn; + x = 7 * cos(a); + y = 7 * sin(a); + path = [ + [0, 0], [2.5, 0], [x, y], [x + 1, y + 1] + ]; + path2 = [ + for(i = len(path) - 1; i > -1; i = i - 1) + ptf_rotate([path[i][0], -path[i][1]], a * 2) + ]; + + t_step = 0.25; + claw_path_basic = concat(curve(t_step, path), curve(t_step, path2)); + claw_path1 = [for(p = claw_path_basic) [p[0] * 1.15, p[1] * 1.1]]; + claw_path2 = [for(p = claw_path_basic) ptf_rotate(p * 1.2, a * 2)]; + claw_path3 = [for(p = claw_path_basic) ptf_rotate(p * 1.15, a * 4)]; + claw_path4 = [for(p = claw_path_basic) ptf_rotate(p * 1.1, a * 6)]; + claw_path5 = [for(p = claw_path_basic) ptf_rotate(p * 0.975, a * 11)]; + + rotate(-15) + scale([1.1, 1.25, 1]) + rotate(15) + intersection() { + rotate_extrude() + polygon(pts); + linear_extrude(5) + polygon(dedup(concat(claw_path1, claw_path2, claw_path3, claw_path4, claw_path5))); + } +} \ No newline at end of file