catears-v2/scad/base/smoothing.scad

18 lines
No EOL
441 B
OpenSCAD

//smoothing smooths a corner, spanned by v1, v2 and v3 with radius r
module smoothing(v1, v2, v3, r, th = 0){
n1 = (v1-v2)/norm(v1-v2);
n2 = (v3-v2)/norm(v3-v2);
alpha = acos(n1*n2)/2;
n3 = (n1+n2)/norm(n1+n2);
centre = v2+n3*(r/sin(alpha));
l = r*sqrt((1/sin(alpha)^2)-1);
translate(th*n3){
difference(){
polygon([v2+l*n1,v2,v2+l*n2]);
translate(centre)
circle(r = r, $fn = 64);
}
}
}