summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErich Eckner <git@eckner.net>2024-05-16 20:08:08 +0200
committerErich Eckner <git@eckner.net>2024-05-16 20:08:08 +0200
commita6d0ec994ccc3545c9b5b5dd2a4159c58eb99352 (patch)
tree5e12a5d49333cea37ac47015dc99bead7575a85d
parenta839ab410fdf9db17987f86911887faeb7a11d16 (diff)
download3D-master.tar.xz
Lego/WeicheYH: KreisbögenHEADmaster
-rw-r--r--Lego/Lego.scad19
1 files changed, 15 insertions, 4 deletions
diff --git a/Lego/Lego.scad b/Lego/Lego.scad
index 515bc1b..544da5a 100644
--- a/Lego/Lego.scad
+++ b/Lego/Lego.scad
@@ -199,15 +199,26 @@ module Hubelino_Schikane_negativ(br, delta) {
}
}
-function uebergang(delta, x) = (-2*delta*x*x*x + 3*delta*x*x);
+function radius(br, delta) = (br*br + delta*delta)/4/delta;
+
+function kreisUebergang(br, delta, x) = (
+ x<1/2
+ ?
+ radius(br,delta)-sqrt(radius(br,delta)*radius(br,delta)-br*x*br*x)
+ :
+ delta+sqrt(radius(br,delta)*radius(br,delta)-br*(1-x)*br*(1-x))-radius(br,delta)
+);
+
+//function uebergang(br, delta, x) = (-2*delta*x*x*x + 3*delta*x*x);
+function uebergang(br, delta, x) = delta < 0 ? -kreisUebergang(br, -delta, x) : delta == 0 ? 0 : kreisUebergang(br, delta, x);
-function weich(delta, x) = ( x<0 ? 0 : x>1 ? delta : uebergang(delta, x));
+function weich(br, delta, x) = ( x<0 ? 0 : x>1 ? delta : uebergang(br, delta, x));
function weichMitSchritt(br, delta, x) = (
- weich(delta, (x-d)/(br-2*d))
+ weich(br, delta, (x-d)/(br-2*d))
);
-function SchikanenSpur(br, deltaX, deltaH, x) = [x,weich(deltaX,x/br),weichMitSchritt(br,deltaH,x)];
+function SchikanenSpur(br, deltaX, deltaH, x) = [x,weich(br,deltaX,x/br),weichMitSchritt(br,deltaH,x)];
module Hubelino_Schikane_positiv_h(br, deltaX, deltaH) {
difference() {