diff --git a/examples/dragon/dragon_and_pearl.scad b/examples/dragon/dragon_and_pearl.scad index ba247b34..5d0c8d9c 100644 --- a/examples/dragon/dragon_and_pearl.scad +++ b/examples/dragon/dragon_and_pearl.scad @@ -6,7 +6,7 @@ use ; use ; use ; use ; -use ; +use ; dragon_and_perl(); @@ -38,68 +38,6 @@ module tail() { tail_scales(120, 2.5, 2, -9, 1); } -module knee_scales(ang, leng, radius, height, thickness) { - module one_scale() { - rotate([0, ang, 0]) - shear(sx = [0, -2]) - linear_extrude(thickness, center = true) - scale([leng, 1]) - circle(1); - } - - for(a = [0:60:300]) { - hull() { - rotate(a) - translate([radius, 0, height]) - one_scale(); - - rotate(a + 15) - translate([radius, 0, height + 1.75]) - one_scale(); - } - } -} -module knee() { - $fn = 4; - scale([1,0.85, 1]) union() { - knee_scales(75, 2.5, 4.25, -4, 1.25); - knee_scales(100, 1.25, 4.5, -7, 1); - knee_scales(110, 1.25, 3, -9, 1); - knee_scales(120, 2.5, 2, -9, 1); - } -} - -module foot() { - upper_arm_r = 3.6; - lower_arm_r = 2.7; - arm_fn = 6; - scale_fn = 4; - scale_tilt_a = 6; - - upper_arm_path = [[.5, 1, 10], [1.25, 6.25, 11.25], [2, 11.5, 12.5], [2, 16.75, 13.75], [1.9, 20, 14.25]]; - lower_arm_path = [[2, 22, 14], [3.5, 21, 10], [4.5, 20.3, 7]]; - - upper_arm_scale_data = one_body_scale(upper_arm_r, arm_fn, scale_fn, scale_tilt_a); - lower_arm_scale_data = one_body_scale(lower_arm_r, arm_fn, scale_fn, scale_tilt_a); - - along_with(upper_arm_path, scale = 0.75, method = "EULER_ANGLE") - rotate([-90, 0, 0]) - dragon_body_scales(upper_arm_r, arm_fn, upper_arm_scale_data); - along_with(lower_arm_path, scale = 0.7, method = "EULER_ANGLE") - rotate([-90, 0, 0]) - dragon_body_scales(lower_arm_r, arm_fn, lower_arm_scale_data); - - translate([2.25, 14.5, 12.75]) - scale([0.7, 1.15, .8]) - rotate([108, 9, 1]) - knee(); - - translate([6.4, 18.95, .25]) - rotate([11, 13, 185]) - scale([1.2, 1.2, 1.2]) - dragon_claw(); -} - module dragon_and_perl() { function __angy_angz(p1, p2) = let( diff --git a/examples/dragon/dragon_foot.scad b/examples/dragon/dragon_foot.scad new file mode 100644 index 00000000..1c794e7a --- /dev/null +++ b/examples/dragon/dragon_foot.scad @@ -0,0 +1,44 @@ +use ; +use ; +use ; + +module knee() { + $fn = 4; + scale([1,0.85, 1]) union() { + knee_scales(75, 2.5, 4.25, -4, 1.25); + knee_scales(100, 1.25, 4.5, -7, 1); + knee_scales(110, 1.25, 3, -9, 1); + knee_scales(120, 2.5, 2, -9, 1); + } +} + +module foot() { + upper_arm_r = 3.6; + lower_arm_r = 2.7; + arm_fn = 6; + scale_fn = 4; + scale_tilt_a = 6; + + upper_arm_path = [[.5, 1, 10], [1.25, 6.25, 11.25], [2, 11.5, 12.5], [2, 16.75, 13.75], [1.9, 20, 14.25]]; + lower_arm_path = [[2, 22, 14], [3.5, 21, 10], [4.5, 20.3, 7]]; + + upper_arm_scale_data = one_body_scale(upper_arm_r, arm_fn, scale_fn, scale_tilt_a); + lower_arm_scale_data = one_body_scale(lower_arm_r, arm_fn, scale_fn, scale_tilt_a); + + along_with(upper_arm_path, scale = 0.75, method = "EULER_ANGLE") + rotate([-90, 0, 0]) + dragon_body_scales(upper_arm_r, arm_fn, upper_arm_scale_data); + along_with(lower_arm_path, scale = 0.7, method = "EULER_ANGLE") + rotate([-90, 0, 0]) + dragon_body_scales(lower_arm_r, arm_fn, lower_arm_scale_data); + + translate([2.25, 14.5, 12.75]) + scale([0.7, 1.15, .8]) + rotate([108, 9, 1]) + knee(); + + translate([6.4, 18.95, .25]) + rotate([11, 13, 185]) + scale([1.2, 1.2, 1.2]) + dragon_claw(); +} \ No newline at end of file diff --git a/examples/dragon/dragon_scales.scad b/examples/dragon/dragon_scales.scad index d4e6806e..9a0cdb65 100644 --- a/examples/dragon/dragon_scales.scad +++ b/examples/dragon/dragon_scales.scad @@ -63,4 +63,26 @@ module tail_scales(ang, leng, radius, height, thickness) { one_scale(); } } +} + +module knee_scales(ang, leng, radius, height, thickness) { + module one_scale() { + rotate([0, ang, 0]) + shear(sx = [0, -2]) + linear_extrude(thickness, center = true) + scale([leng, 1]) + circle(1); + } + + for(a = [0:60:300]) { + hull() { + rotate(a) + translate([radius, 0, height]) + one_scale(); + + rotate(a + 15) + translate([radius, 0, height + 1.75]) + one_scale(); + } + } } \ No newline at end of file