-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, case_bottom_z ])
- rotate([0,180,0])
- PropRecess();
-}
-