Files

78 lines
1.7 KiB
OpenSCAD

// creates 1 side of the idt
module delay_line(
lambda = 1,
n_fingers = 1,
finger_length = 50,
gap = 0,
thickness = 0
) {
// just a very small value that allows the polygons to overlap nicely
esp = $fs;
l45 =lambda*5/4;
l2 = lambda/2;
l4 = lambda/4;
l8 = lambda/8;
b = l4 + thickness;
f = l4 + finger_length*lambda;
points_cap = [
[0, 0],
[0, l2],
[-b-f, l2],
[-b-f, l4],
[-b, l4],
[-b, 0]
];
points = [
[0, 0],
[b, 0],
[b, l2],
[b+f, l2],
[b+f, l2+l4],
[b, l2+l4],
[b, l4*5-l4 + esp],
[0, l4*5-l4 + esp]
];
union () {
translate([0, l2, 0]){
for(i = [0:n_fingers]){
translate([0, i*(l45-l4), 0]) {
polygon(points);
}
}
color("red") {
rotate([0, 0, 180])
translate([0, 0, 0]) {
polygon(points_cap);
}
translate([f+l2+gap+thickness, -l2, 0]) {
square(size=[l4+thickness, l4]);
}
}
union() {
for(i = [0:n_fingers]){
translate([2*b+f+gap+l4, i*(l45-l4)+l2+l4 , 0])
rotate([0, 0, 180])
polygon(points);
}
}
color("red") {
translate([2*b+f+gap+l4, n_fingers*lambda+lambda-l4, 0]) {
polygon(points_cap);
}
translate([0, n_fingers*lambda+lambda, 0]) {
square(size=[l4+thickness, l4]);
}
}
}
}
}