From: Ian Jackson Date: Sat, 15 Feb 2014 19:20:39 +0000 (+0000) Subject: wardrobe-hook: wip, elevation X-Git-Tag: filamentspool-v2-release~441 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=reprap-play.git;a=commitdiff_plain;h=f57afd91759a049296c6d454b2e3a2b46a5560f7 wardrobe-hook: wip, elevation --- diff --git a/funcs.scad.cpp b/funcs.scad.cpp index 0d589ac..29d5a1e 100644 --- a/funcs.scad.cpp +++ b/funcs.scad.cpp @@ -8,13 +8,20 @@ function dist(a,b) = function circle_point(c, r, alpha) = [ c[0] + r * cos(alpha), c[1] + r * sin(alpha) ]; -function tangent_intersect(a,c,r) = #define d (dist(a,c)) #define alpha (atan2(a[1]-c[1],a[0]-c[0])) #define gamma (asin(r / d)) #define beta (alpha + 90 - gamma) + +function tangent_intersect_beta(c,r,a) = + beta; + +function tangent_intersect_b(c,r,a) = circle_point(c, r, beta); #undef d #undef alpha #undef gamma #undef beta + +function reflect_in_y(p) = [-p[0], p[1]]; + diff --git a/wardrobe-hook.scad b/wardrobe-hook.scad index 7f29082..ecb1b12 100644 --- a/wardrobe-hook.scad +++ b/wardrobe-hook.scad @@ -1,5 +1,7 @@ // -*- C -*- +include + module FArcSegment_mask(beta) { for (i=[0 : 0.75 : 3]) { rotate(i*beta/4) @@ -42,12 +44,12 @@ tuberad = tubewidth/2; bend = atan(tuberad/stemlen); mainoutrad = tuberad + mainthick; hookoutrad = hookinrad + hookwidth; -hookcy = stemlen - hookoutrad; +hookcy = -(stemlen - hookoutrad); -eltopx = topwidth/2; -eltopy = -tuberad + tubeheight + mainthick + 1; -elmidx = topwidth/2; -elmidy = -tuberad; +eltop = [topwidth/2, -tuberad + tubeheight + mainthick + 1]; +elmid = [topwidth/2, -tuberad]; +ellow = tangent_intersect_b([0,hookcy], hookinrad, elmid); +ellowextra = 180 - tangent_intersect_beta([0,hookcy], hookinrad, elmid); module Plan(){ dy = tubeheight - tuberad*2; @@ -59,12 +61,19 @@ module Plan(){ square(center=false, size=[mainthick, stemlen/cos(bend)]); } -module Elevation(){ - FArcSegment(0, -hookcy, hookinrad, hookoutrad, 180, 90+hookcurl); +module ElevationCore(){ + FArcSegment(0, hookcy, hookinrad, hookoutrad, + 180 - ellowextra, + 90 + hookcurl); translate([-hookoutrad*sqrt(0.5), -(stemlen+10)]) mirror([1,0]) square(center=false, size=[topwidth, stemlen + tubeheight + 20]); + polygon([[-hookoutrad, ellow[1]], + reflect_in_y(eltop), + eltop, + elmid, + ellow]); } Plan(); translate([50,0]) - Elevation(); + ElevationCore();