Added dcircle(), curved(), semiegg()
Signed-off-by: Tony Tkáčik <tonydamage@gmail.com>
This commit is contained in:
parent
173b562098
commit
ef7ce80785
2 changed files with 49 additions and 3 deletions
|
|
@ -1,2 +1,3 @@
|
|||
|
||||
CURVE_POLYGON_LENGTH=3; // Ideal for 3D Printing
|
||||
CURVE_POLYGON_MINIMUM=16;
|
||||
CURVE_POLYGON_LENGTH=3; // Ideal for 3D Printing
|
||||
|
|
|
|||
|
|
@ -4,15 +4,60 @@ module move(x=0,y=0,z=0) {
|
|||
translate([x,y,z]) children();
|
||||
}
|
||||
|
||||
function circle_details(r) = round(3.1415*r*2/CURVE_POLYGON_LENGTH);
|
||||
function circle_details(r) = max(CURVE_POLYGON_MINIMUM,round(3.1415*r*2/CURVE_POLYGON_LENGTH));
|
||||
|
||||
/**
|
||||
* @deprecated
|
||||
**/
|
||||
module rcircle(r) {
|
||||
circle(r,$fn=circle_details(r));
|
||||
}
|
||||
|
||||
module dcircle(r) {
|
||||
circle(r,$fn=circle_details);
|
||||
}
|
||||
|
||||
module ring(rs,rl) {
|
||||
difference() {
|
||||
rcircle(max(rs,rl));
|
||||
rcircle(min(rs,rl));
|
||||
}
|
||||
}
|
||||
}
|
||||
/**
|
||||
* FIXME: Find better name & document this
|
||||
*/
|
||||
module semiegg(rc,rf,xcf, ycf) {
|
||||
echo("rc,rf,xcf,ycf",rc,rf,xcf, ycf);
|
||||
function _rc(rf,dcf,rc) = (pow(rf,2)-pow(rc,2)-pow(dcf,2))/(2*(rf-rc));
|
||||
lrcb= _rc(rf,ycf,rc+xcf);
|
||||
|
||||
lccb=ycf*(lrcb/(lrcb-rf));
|
||||
rrcb= _rc(rf,ycf,rc-xcf);
|
||||
rccb=ycf*(rrcb/(rrcb-rf));
|
||||
union() {
|
||||
move(y=ycf,x=xcf) rcircle(rf);
|
||||
intersection() {
|
||||
move(x=lrcb-rc) rcircle(lrcb);
|
||||
move(x=-rc) square([rc,lccb]);
|
||||
}
|
||||
intersection() {
|
||||
move(x=-rrcb+rc) rcircle(rrcb);
|
||||
square([rc,rccb]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* FIXME: Find better name & document this
|
||||
**/
|
||||
module curved(h,w_bottom,w_top) {
|
||||
curve_h=h;
|
||||
curve_w=w_top-w_bottom;
|
||||
circle_y=curve_w>0 ? 0 : curve_h;
|
||||
curve_r = (pow(curve_h,2)+pow(curve_w,2))/(2*abs(curve_w));
|
||||
echo(curve_w, curve_r);
|
||||
move(x=-min(w_bottom,w_top)) difference() {
|
||||
move(x=-abs(curve_w)) square([max(w_top,w_bottom),curve_h]);
|
||||
move(x=-curve_r,y = circle_y) rcircle(curve_r);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue