3 function rads2degs(rads) = rads * 360/tau;
5 function ClipHook_r2(w,g,l,ye,k) = w/2 + g + w/2;
6 function ClipHook_r3(w,g,l,ye,k) = k * ClipHook_r2(w,g,l,ye,k);
7 function ClipHook_yce(w,g,l,ye,k) = g/2 + w + g + w/2 - ClipHook_r3(w,g,l,ye,k);
8 function ClipHook_xe(w,g,l,ye,k) =
9 sqrt(pow( ClipHook_r3(w,g,l,ye,k), 2) -
10 pow( ClipHook_yce(w,g,l,ye,k) + ye, 2));
12 module ClipHook(w=1.2, g=0.2, l=0.0, ye=0, k=3.0, h=3.5) {
13 r2 = ClipHook_r2(w,g,l,ye,k);
14 r3 = ClipHook_r3(w,g,l,ye,k);
15 yce = ClipHook_yce(w,g,l,ye,k);
16 xe = ClipHook_xe(w,g,l,ye,k);
21 echo("ClipHook(w g l ye k h) ", w, g, l, ye, k, h);
22 echo("ClipHook r2 r3 yce xe =", r2, r3, yce, xe);
26 module jcirc(x,y) { translate([x,y,0]) circle(r=w/2); }
27 module jarc(cx,cy,r,a1=0,a2=tau) {
30 translate([cx,cy,0]) {
35 circle(r=r-w/2, h=h+2);
39 echo(" jarc ", a1,a2, astep, ai, rads2degs(a1 + astep*ai) );
40 rotate(rads2degs(a1 + astep*ai)) {
41 polygon([ [0,0], [1,0],
42 [cos(rads2degs(astep*2)),sin(rads2degs(astep*2))] ]);
50 linear_extrude(height=h) {
52 jarc(xc, yc, r2, tau*0.25, tau*0.75);