From 3ff2961a6d6c60be6b06bcfe136bc277c9bf52bb Mon Sep 17 00:00:00 2001 From: Justin Lin Date: Thu, 9 Dec 2021 22:01:12 +0800 Subject: [PATCH] update hair --- examples/dragon/infinity_dragon.scad | 72 ++++++++++++++++++++++++++-- 1 file changed, 67 insertions(+), 5 deletions(-) diff --git a/examples/dragon/infinity_dragon.scad b/examples/dragon/infinity_dragon.scad index c2ae774e..d67007a3 100644 --- a/examples/dragon/infinity_dragon.scad +++ b/examples/dragon/infinity_dragon.scad @@ -36,6 +36,67 @@ module tail() { tail_scales(100, 1.25, 4.5, -7, 1); tail_scales(110, 1.25, 3, -9, 1); tail_scales(120, 2.5, 2, -9, 1); + translate([1, 0, -1]) + rotate([0, -12, 0]) + scale([.8, 1, 1]) + hair(); + + module hair() { + tail_hair = [ + [4, -1], + [8, -1.5], + [10, -1], + [13, .5], + [9, -0.2], + [10, 0], + [14, 3], + [17, 9.5], + [14, 8], + [12, 7], + [9, 6], + [11.5, 10], + [13, 12], + [16, 14], + [12, 13], + [8, 11], + [10, 14], + [5, 11], + [2, 8.5], + [-1, 3] + ]; + + rotate([-2.5, 0, 0]) + translate([-1, .5, 5.5]) + scale([1.1, 1, 1.3]) { + translate([2, 0, -3]) + scale([2, 1, .8]) + rotate([-90, 70, 15]) + linear_extrude(.75, center = true) + polygon(tail_hair); + + scale([.8, .9, .6]) + translate([2, 0, -5]) + scale([1.75, 1, .8]) + rotate([-90, 70, 15]) { + linear_extrude(1.5, scale = 0.5) + polygon(tail_hair); + mirror([0, 0, 1]) + linear_extrude(1.5, scale = 0.5) + polygon(tail_hair); + } + + scale([.7, .7, .9]) + translate([2, 0, -5]) + scale([2, 1, .85]) + rotate([-90, 70, 15]) { + linear_extrude(3.5, scale = 0.5) + polygon(tail_hair); + mirror([0, 0, 1]) + linear_extrude(3.5, scale = 0.5) + polygon(tail_hair); + } + } + } } module infinity_dragon() { @@ -51,7 +112,7 @@ module infinity_dragon() { body_path0 = lemniscate_2circles(30, 5.25, $fn = 44); body_path = concat( [for(i = [22:len(body_path0) - 1]) body_path0[i]], - [for(i = [0:12]) body_path0[i]] + [for(i = [0:11]) body_path0[i]] ); leng_body_path = len(body_path); angy_angz = __angy_angz(body_path[16], body_path[17]); @@ -67,18 +128,19 @@ module infinity_dragon() { scale_tilt_a = 6; one_body_scale_data = one_body_scale(body_r, body_fn, scale_fn, scale_tilt_a); - along_with(body_path, scale = [0.5, 0.7, 0.5]) + along_with(body_path, scale = [0.45, 0.7, 0.45]) rotate([90, 90, 0]) one_segment(body_r, body_fn, one_body_scale_data); ayz = __angy_angz(body_path[leng_body_path - 2], body_path[leng_body_path - 1]); - translate([1, 0, 0]) + translate([0, 0, 0]) translate(body_path[leng_body_path - 1]) - rotate([0, ayz[0] + 96, ayz[1]]) + rotate([0, ayz[0] + 95, ayz[1]]) mirror([0, 0, 1]) rotate(-12) - scale([0.55, 0.55, 0.85]) + scale([0.5, 0.5, 0.85]) + rotate([0, 0, 126]) tail(); translate([-20, -20, -5])