+// ---------- cleat ----------
+
+module CleatFrame(s) {
+ translate([0,0, cleat_curve_r])
+ rotate( s * cleat_horn_l / cleat_curve_r * 360/TAU * [0,1,0] )
+ translate([0,0, -cleat_curve_r])
+ rotate([0, 90, 0])
+ sphere(r= ( cleat_horn_d_min * s +
+ cleat_horn_d_max * (1-s) ) * 0.5);
+}
+
+
+module CleatHorn(){
+ for (si=[0 : cleat_frames-2]) {
+ s0 = si / (cleat_frames-1);
+ s1 = (si+1) / (cleat_frames-1);
+ hull(){
+ CleatFrame(s0);
+ CleatFrame(s1);
+ }
+ }
+}
+
+module VCleatA(){ ////toplevel
+// DummyA();
+
+ CleatHorn();
+}
+