18 lines
No EOL
441 B
OpenSCAD
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);
|
|
}
|
|
}
|
|
} |