+module PropRecess(){
+ // origin is nonstandard
+ hwd345 = 0.5*prop_main_width + prop_side_gap;
+ hwd35 = 0.5*prop_fin_width + prop_side_gap;
+ rotate([90,0,90]){
+ linextr(-hwd345, +hwd345)
+ polygon([ prp1,
+ prp2,
+ prp3,
+ prp4,
+ prp4 + [0,10],
+ prp1 + [0,10],
+ ]);
+ linextr(-hwd35, +hwd35)
+ polygon([ prp1,
+ prp3,
+ prp5,
+ prp5 + [0,10],
+ prp1 + [0,10],
+ ]);
+ }
+}
+
+module SomePropProfile(gamma){
+// prop-internal
+ pip1 = [0,0];
+ pip2 = [ 0.5 * (prop_main_th - prop_end_dia),
+ prop_taper_len ];
+
+ translate(prlp1) {
+ circleat([0,0], prop_end_dia/2);
+ cirecleat(pip2, prop_main_th);
+
+ }
+}
+
+module CasePropRecess(pas) {
+ // destructure entry in prop_angle_specs
+ beta = pas[0];
+ b = prop_lengths [ pas[1] ];
+ p = prop_lid_posns[ pas[2]] ;
+
+ k = hp_k;
+ x = k / (2 * sin(beta/2)) - hppT[0];
+ c = p + x;
+
+ // https://en.wikipedia.org/wiki/Solution_of_triangles#Two_sides_and_non-included_angle_given_(SSA) [25.1.18]
+ // we always want the positive solution because it has a closer to c
+ a = c * cos(beta) + sqrt( b*b - pow(c * sin(beta),2) );
+ q = a - x;
+
+ echo(beta, a, b, c);
+
+ Flip_bot(1)
+ translate([ phone_width/2, -q, epp2o[1]-case_th_bottom ])
+ rotate([0,180,0])
+ PropRecess();
+}
+