From ccfca4e246430707970cd630e673224652223f19 Mon Sep 17 00:00:00 2001 From: Justin Lin Date: Tue, 20 Jul 2021 12:47:46 +0800 Subject: [PATCH] curve nose --- examples/turtle/hilbert_dragon.scad | 43 ++++++++++++++++------------- 1 file changed, 24 insertions(+), 19 deletions(-) diff --git a/examples/turtle/hilbert_dragon.scad b/examples/turtle/hilbert_dragon.scad index 86a83c0b..4fc29d0a 100644 --- a/examples/turtle/hilbert_dragon.scad +++ b/examples/turtle/hilbert_dragon.scad @@ -6,6 +6,10 @@ use ; use ; use ; use ; +use ; +use ; +use ; +use ; hilbert_dragon(); @@ -89,7 +93,7 @@ module hilbert_dragon() { linear_extrude(22, scale = 0.05, twist = 50 - rands(0, 100, 1, seed = i + 2)[0]) translate([0, 10, 0]) circle(3, $fn = 5); - } + } } module one_horn() { @@ -101,19 +105,20 @@ module hilbert_dragon() { } module mouth() { + path1 = curve(0.4, [[0, -8, -1], [0, -11, 0], [0, -12, 5], [0, -9, 5], [0, -4, 6], [0, -0.5, 8], [0, 5, 6.5], [0, 8, 6], [0, 12, 0], [0, 16, 0]]); + path2 = [for(p = path1) ptf_rotate(p, [0, -12, 0]) * 0.9 + [-2, 0, 0]]; + path3 = [for(i = [0:len(path1) - 1]) [-i / 6 - 1.5, i / 1.65 - 9, 0]]; + path4 = [for(p = path3) [-p[0], p[1], p[2]]]; + path5 = [for(p = path2) [-p[0], p[1], p[2]]]; + translate([0, 0, -2]) rotate([90, 0, -90]) - ellipse_extrude(8, slices = 2) - polygon( - shape_trapezium([4, 15], - h = 22, - corner_r = 0) - ); - + sweep(paths2sections([path1, path2, path3, path4, path5])); + translate([0, 0, -3]) rotate([90, 0, -90]) - ellipse_extrude(6, slices = 4) - polygon( + ellipse_extrude(5.5, slices = 4) + polygon( shape_trapezium([6, 20], h = 20, corner_r = 0) @@ -131,14 +136,14 @@ module hilbert_dragon() { } module one_eye() { - translate([-5, 3, -2]) - rotate([-15, 0, 75]) - scale([1, 1, 1.5]) - sphere(1.5, $fn = 5); + translate([-5, 2.6, -2]) + rotate([-10, 0, -25]) + scale([1, 1, 2]) + sphere(1.75, $fn = 5); - translate([-5.5, 3.5, -2.5]) + translate([-5.25, 3.5, -2.5]) rotate([-15, 0, 75]) - sphere(0.5, $fn = 8); + sphere(0.65, $fn = 7); } module one_beard() { @@ -152,12 +157,12 @@ module hilbert_dragon() { rotate([0, angy_angz[0] + 15, angy_angz[1]]) translate([0, 0, -25 / 2]) scale(1.15) { - scale([0.8, 0.9, 1]) hair(); + scale([0.8, 0.9, 1]) hair(); translate([0, 0, 2]) { rotate(-90) { - one_horn(); - mirror([-1, 0, 0]) one_horn(); + one_horn(); + mirror([-1, 0, 0]) one_horn(); } mouth();