chiark / gitweb /
fairphone-case: prop: wip debugging, before move case instead
[reprap-play.git] / fairphone-case.scad
index 56ab5fc60a67e67fe4c0df6ceb336da134573bd5..600b18f0f80840d9451677fca8b4da08162fcba4 100644 (file)
@@ -622,11 +622,12 @@ module CaseBase(){
     EdgeProfile();
 }
 
+function prop_x(gamma) = hp_k / (2 * sin(gamma/2)) - hppT[0];
+
 module PropProfile(gamma, cut=0, rot=0){ ////toplevel
   // https://en.wikipedia.org/wiki/Solution_of_triangles#Two_sides_and_the_included_angle_given_(SAS)
-  k = hp_k;
+  x = prop_x(gamma);
   p = phone_height - prlp10[0] - hppB[0];
-  x = k / (2 * sin(gamma/2)) - hppT[0];
   b = p + x;
 
   q = phone_height - hppT[0]; // prpp7[0] is 0 by definition
@@ -704,6 +705,12 @@ module PropAggregateProfile(){
     PropProfile(angle, 0,0);
 }
 
+module Prop(){ ////toplevel
+  hw = prop_main_width/2;
+  linextr(-hw, +hw)
+    PropAggregateProfile();
+}
+
 module Case(){ ////toplevel
   difference(){
     union(){
@@ -1041,16 +1048,33 @@ module HingeScrews(){
   }
 }
 
-module DemoPropAngleProjection(){
-  rotate([0,0,90])
-    projection(cut=true)
-    rotate([0,90,0])
-    translate([-prop_x_pos, 0,0])
-    children();
+module DemoPropAngleSelect(c){
+  color(c) difference(){
+    union(){ children(); }
+    translate([ prop_x_pos, -400, -200 ])
+      cube([ 400,800,400 ]);
+  }
 }
 
 module DemoPropAngle(ang){
-  DemoPropAngleProjection() Case();
+  hL = [0, -(phone_height - hppT[0]), hppT[1]];
+  hC = [0, -(phone_height - hppB[0]), hppB[1] + hp_k*2];
+
+  DemoPropAngleSelect("red")  Case();
+
+  translate([0,0, -hp_k*2])
+    translate(hC)
+    rotate([-ang/2,0,0])
+    translate(-hC)
+    translate(hL)
+    rotate([-ang/2,0,0])
+    translate(-hL)
+    DemoPropAngleSelect("blue") Lid();
+
+  color("orange")
+    translate([prop_x_pos, -prlp10[0], prlp10[1]])
+    rotate([90,0,90])
+    Prop();
 }
 
 module DemoPropAngles(){ ////toplevel