diff --git a/tape_fan.scad b/tape_fan.scad new file mode 100644 index 0000000..e741eae --- /dev/null +++ b/tape_fan.scad @@ -0,0 +1,44 @@ +$fn = 100; + +w = 1; +h = 1; + +function fn(a, b) = round(sqrt(pow(a[0]-b[0],2) + (pow(a[1]-b[1], 2)))); + +module shape() cylinder(h, w/2, w/2, $fn=12); + +function b_pts(pts, n, idx) = + len(pts)>2 ? + b_pts([for(i=[0:len(pts)-2])pts[i]], n, idx) * n*idx + + b_pts([for(i=[1:len(pts)-1])pts[i]], n, idx) * (1-n*idx) + : pts[0] * n*idx + + pts[1] * (1-n*idx); + +module b_curve(pts) + let (idx=fn(pts[0], pts[len(pts)-1]), n = 1/idx){ + for (i= [0:idx-1]) + hull(){ + translate(b_pts(pts, n, i)) shape(); + translate(b_pts(pts, n, i+1)) shape(); + };} + +module spike() { + polygon([[0, 0], [10, 0], [5, 50]]); + +} + +blade = 8; + +module fan() { + for (i = [0 : blade]){ + rotate( i * 360/blade, [0, 0, 1]) + b_curve([[0, 0], [20, 30], [10, 45], [0, 37]]); + } + + cylinder(h, d = 35); +} + +difference() { + fan(); + cylinder(h, d = 5); +};