+beta = asin(front_setback / front_height);
+
+uf = [-sin(beta), cos(beta)];
+ur = [-uf[0], uf[1]];
+
+pp = [0, 0];
+pq = pp + uf*front_height + ur*eclip_ra_offset;
+pr = [ pq[0] - eclip_base_offset + eclip_wall_offset, 0 ];
+
+module Sketch(){
+ polygon([pq, pp, pr]);
+}
+
+thicks = [ 2, 2, 2 ];
+
+module Joins(alpha, objnum, objnum_f, objnum_m) {
+ echo("Joins",objnum, objnum_f, objnum_m);
+ thm = thicks[objnum_m];
+ if (objnum==objnum_f) {
+ EclipLPlan(alpha);
+ EclipRPlan(alpha, thm);
+ }
+ if (objnum==objnum_m)
+ rotate(alpha)
+ EclipPPlan(thm);
+}
+
+module ObjectJoins(objnum){
+ echo("Object",objnum);
+ translate(pp) Joins(beta, objnum, 0,1);
+ translate(pr) mirror([1,0,0]) Joins(0, objnum, 0,2);
+ translate(pq) rotate([0,0,-90]) Joins(beta, objnum, 2,1);
+}
+
+module Base(){
+ ObjectJoins(0);
+}
+
+module Front(){
+ ObjectJoins(1);
+}
+
+module Back(){
+ ObjectJoins(2);
+}
+
+module Demo(){
+ Base();
+ Front();
+ Back();
+}
+