--- /dev/null
+// -*- C -*-
+
+// suitable for masking things within radius sqrt(2) only
+module FArcSegment_mask(beta) {
+ for (i=[0 : 0.75 : 3]) {
+ rotate(i*beta/4)
+ polygon([[0, 0],
+ [1, 0],
+ [cos(beta/4), sin(beta/4)]]);
+ }
+}
+
+module FArcSegment(xc,yc,inrad,outrad,alpha,delta) {
+ translate([xc,yc]) {
+ intersection() {
+ difference() {
+ circle(r=outrad, $fn=70);
+ circle(r=inrad, $fn=70);
+ }
+ rotate(alpha) scale(outrad*2) {
+ FArcSegment_mask(delta);
+ }
+ }
+ }
+}
+
// -*- C -*-
include <funcs.scad>
-
-module FArcSegment_mask(beta) {
- for (i=[0 : 0.75 : 3]) {
- rotate(i*beta/4)
- polygon([[0, 0],
- [1, 0],
- [cos(beta/4), sin(beta/4)]]);
- }
-}
-
-module FArcSegment(xc,yc,inrad,outrad,alpha,delta) {
- translate([xc,yc]) {
- intersection() {
- difference() {
- circle(r=outrad, $fn=70);
- circle(r=inrad, $fn=70);
- }
- rotate(alpha) scale(outrad*2) {
- FArcSegment_mask(delta);
- }
- }
- }
-}
+include <utils.scad>
tubeslop = 0.5;
tubeheight = 30 + tubeslop;