add erin's cat ears
authordaniel watson <ozzloy@gmail.com>
Thu, 17 May 2018 00:53:51 +0000 (17:53 -0700)
committerdaniel watson <ozzloy@gmail.com>
Thu, 17 May 2018 00:53:51 +0000 (17:53 -0700)
erin/cat_ears.scad [new file with mode: 0644]

diff --git a/erin/cat_ears.scad b/erin/cat_ears.scad
new file mode 100644 (file)
index 0000000..65f1ded
--- /dev/null
@@ -0,0 +1,117 @@
+$fn = 100;
+
+head_top_inner_radius = 76;
+band_top_width = 5;
+band_thickness = 3;
+head_top_outer_radius = head_top_inner_radius + band_thickness;
+buffer=10;
+band_height = 127;
+
+head_side_inner_radius = 127;
+head_side_outer_radius = head_side_inner_radius + band_thickness;
+
+module hairband() {
+
+  difference() {
+
+    difference() {
+    
+      union() {
+        difference() {
+          cylinder(r=head_top_outer_radius, h=band_top_width, center=true);
+          cylinder(r=head_top_inner_radius, h=band_top_width+buffer, center=true);
+        }
+
+        translate([head_side_outer_radius - head_top_outer_radius,0,0])
+          difference() {
+          cylinder(r=head_side_outer_radius, h=band_top_width, center=true);
+          cylinder(r=head_side_inner_radius, h=band_top_width+buffer, center=true);
+        }
+
+        translate([-(head_side_outer_radius - head_top_outer_radius),0,0])
+          difference() {
+          cylinder(r=head_side_outer_radius, h=band_top_width, center=true);
+          cylinder(r=head_side_inner_radius, h=band_top_width+buffer, center=true);
+        }
+      }
+
+      difference() {
+        translate([-(head_side_outer_radius - head_top_outer_radius),0,0])
+          cylinder(r=head_side_inner_radius, center=true, h=band_top_width+buffer);
+        translate([-head_side_outer_radius, -0, 0])
+          cube([head_side_outer_radius*2, head_side_outer_radius*2, band_top_width+buffer*2], center=true);
+        translate([0, head_side_outer_radius/2, 0])
+          cube([head_side_outer_radius*2, head_side_outer_radius, band_top_width+buffer*2], center=true);
+      }
+
+      difference() {
+        translate([(head_side_outer_radius - head_top_outer_radius),0,0])
+          cylinder(r=head_side_inner_radius, center=true, h=band_top_width+buffer);
+        translate([head_side_outer_radius, 0, 0])
+          cube([head_side_outer_radius*2, head_side_outer_radius*2, band_top_width+buffer*2], center=true);
+        translate([0, head_side_outer_radius/2, 0])
+          cube([head_side_outer_radius*2, head_side_outer_radius, band_top_width+buffer*2], center=true);
+      }
+
+      translate([0, -band_height, 0])
+        cube([head_side_inner_radius*2, head_side_inner_radius, band_top_width+buffer*2], center=true);
+
+    }
+
+
+    difference() {
+      cylinder(r=head_side_outer_radius*2+buffer, h=band_top_width+buffer, center=true);
+
+      cylinder(r=head_top_outer_radius, center=true, h=band_top_width+buffer*3);
+      intersection() {
+        translate([head_side_outer_radius - head_top_outer_radius,0,0])
+          cylinder(r=head_side_outer_radius, h=band_top_width+buffer*3, center=true);
+        translate([-head_top_outer_radius+buffer/2,-head_top_outer_radius,0])
+          cube([head_top_outer_radius+buffer,head_top_outer_radius*2,band_top_width+buffer*3], center=true);
+      }
+      intersection() {
+        translate([-(head_side_outer_radius - head_top_outer_radius),0,0])
+          cylinder(r=head_side_outer_radius, h=band_top_width+buffer*3, center=true);
+        translate([head_top_outer_radius+buffer,-head_top_outer_radius,0])
+          cube([head_top_outer_radius+buffer,head_top_outer_radius*2,band_top_width+buffer*3], center=true);
+      }
+    }
+  }
+}
+
+hairband();
+
+module ears() {
+  translate([0, 0, - band_top_width / 2]) {
+    rotate([90,0,30]) {
+      translate([-0.2, 0, 1]) {
+        linear_extrude(height=58.5) {
+          square([band_thickness, band_top_width]);
+        }
+      }
+    }
+    rotate([90,0,-30]) {
+      linear_extrude(height=57.5) {
+        square([band_thickness, band_top_width]);
+      }
+    }
+
+    translate([band_thickness/2, 0, 0])
+      cylinder(h=band_top_width, r=band_thickness/2);
+  } }
+
+translate([-57, 17, 0]) {
+  rotate([0, 0, 30]) {
+    translate([head_top_outer_radius/2, head_top_outer_radius, 0])
+      ears();
+  }
+}
+
+mirror([200, 0, 0]) {
+  translate([-57, 17, 0]) {
+    rotate([0, 0, 30]) {
+      translate([head_top_outer_radius/2, head_top_outer_radius, 0])
+        ears();
+    }
+  }
+}