/ examples / dragon / dragon_foot.scad
dragon_foot.scad
 1  use <along_with.scad>
 2  use <dragon_scales.scad>
 3  use <dragon_claw.scad>
 4  
 5  module knee() {
 6      $fn = 4;
 7      scale([1,0.85, 1]) union() {
 8          knee_scales(75, 2.5, 4.25, -4, 1.25);
 9          knee_scales(100, 1.25, 4.5, -7, 1);
10          knee_scales(110, 1.25, 3, -9, 1);
11          knee_scales(120, 2.5, 2, -9, 1);   
12      }
13  }
14  
15  module foot() {
16      upper_arm_r = 3.6;
17      lower_arm_r = 2.7;
18      arm_fn = 6;
19      scale_fn = 4;
20      scale_tilt_a = 6;
21  
22      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]];
23      lower_arm_path = [[2, 22, 14],  [3.5, 21, 10], [4.5, 20.3, 7]];
24  
25      upper_arm_scale_data = one_body_scale(upper_arm_r, arm_fn, scale_fn, scale_tilt_a);
26      lower_arm_scale_data = one_body_scale(lower_arm_r, arm_fn, scale_fn, scale_tilt_a);
27  
28      along_with(upper_arm_path, scale = 0.75, method = "EULER_ANGLE") 
29      rotate([-90, 0, 0])
30          dragon_body_scales(upper_arm_r, arm_fn, upper_arm_scale_data);
31  
32      along_with(lower_arm_path, scale = 0.7, method = "EULER_ANGLE") 
33      rotate([-90, 0, 0])
34          dragon_body_scales(lower_arm_r, arm_fn, lower_arm_scale_data);
35      
36      translate([2.25, 14.5, 12.75])
37      scale([0.7, 1.15, .8])
38      rotate([108, 9, 1])
39          knee();
40  
41      translate([6.4, 18.95, .25])
42      rotate([11, 13, 185])
43      scale([1.2, 1.2, 1.2])
44          dragon_claw();
45  }