chiark / gitweb /
wardrobe-hook: wip, elevation
[reprap-play.git] / wardrobe-hook.scad
index 7f29082cb2e736dc6cb840a203c8012faf0e28c0..ecb1b12b66cb572fdee4cb0e126a41b1e9384251 100644 (file)
@@ -1,5 +1,7 @@
 // -*- C -*-
 
+include <funcs.scad>
+
 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();