eps = 0.01;
infty = 100;
-wall = 1;
+/* Quasar elevons */
+/*
+slot_off_x = 8;
+slot_off_z = 0;
+horn_l = 40;
+slot_depth_front = 6;
+slot_depth_rear = 2.5;
+base_angle = 0;
+top_hole_h = 18;
+*/
+/* Quasar rudder */
slot_off_x = 8;
-slot_off_y = 8;
+slot_off_z = -2.5;
+horn_l = 40;
+slot_depth_front = 8;
+slot_depth_rear = 5;
+base_angle = 0;
+top_hole_h = 18;
-slot_l = 30;
-slot_depth_front = 6;
-slot_depth_rear = 2;
+wall = 1;
-hole_h = 20;
-hole_d = 1.5;
-hole_step = 1.8*hole_d;
+hole_d = 1.6;
+hole_step = 3;
n_holes = 3;
-base_angle = 5;
hole_side = 2*wall;
-module horn() {
- difference() {
+module horn_body() {
+ // slot
+ hull() {
+ translate([slot_off_x, slot_off_z, 0])
+ cube([eps, slot_depth_front, wall]);
+ translate([horn_l - eps, slot_off_z, 0])
+ cube([eps, slot_depth_rear, wall]);
+ }
hull() {
// base
- rotate([0, 0, base_angle]) {
- translate([slot_off_x, slot_depth_front-eps, 0])
+ translate([slot_off_x,
+ slot_depth_front+slot_off_z-eps, 0])
cube([eps, eps, wall]);
- translate([slot_off_x + slot_l - eps, slot_depth_rear-eps, 0])
+ translate([horn_l - eps,
+ slot_depth_rear+slot_off_z-eps, 0])
cube([eps, eps, wall]);
- }
- for (y = [1:n_holes]) {
- translate([0, hole_h -(y-1)*hole_step, 0])
+ rotate([0, 0, -base_angle]) for (y = [1:n_holes]) {
+ translate([0, top_hole_h -(y-1)*hole_step, 0])
cylinder(r = hole_d/2 + hole_side,
h = wall, $fn = 6);
}
}
+}
- for (y = [1:n_holes]) {
- translate([0, hole_h -(y-1)*hole_step, -eps])
+module horn() {
+ difference() {
+ horn_body();
+ // holes
+ rotate([0, 0, -base_angle]) for (y = [1:n_holes]) {
+ translate([0, top_hole_h -(y-1)*hole_step, -eps])
cylinder(r = hole_d/2, h = wall + 2*eps, $fn = 6);
}
}
- // slot
- rotate([0, 0, base_angle]) hull() {
- translate([slot_off_x, 0, 0])
- cube([eps, slot_depth_front, wall]);
- translate([slot_off_x + slot_l - eps, 0, 0])
- cube([eps, slot_depth_rear, wall]);
- }
}
horn();