78 lines
1.7 KiB
OpenSCAD
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]);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|