diff options
author | Erich Eckner <git@eckner.net> | 2024-05-16 20:08:08 +0200 |
---|---|---|
committer | Erich Eckner <git@eckner.net> | 2024-05-16 20:08:08 +0200 |
commit | a6d0ec994ccc3545c9b5b5dd2a4159c58eb99352 (patch) | |
tree | 5e12a5d49333cea37ac47015dc99bead7575a85d | |
parent | a839ab410fdf9db17987f86911887faeb7a11d16 (diff) | |
download | 3D-master.tar.xz |
-rw-r--r-- | Lego/Lego.scad | 19 |
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() { |