# Snippet: Circular sector and arcs with OpenScad

The idea of creating a robust arc module for OpenScad is quite simple: We take two circles with radius $$r_1$$ and $$r_2$$ and subtract them from eachother. After that we create a triangle from $$(0, 0)$$ to points on the angles $$\alpha_1$$ and $$\alpha_2$$ we want to extract:

module arc(r1, r2, a1, a2) {
difference() {
difference() {
polygon([[0,0], [cos(a1) * (r1 + 50), sin(a1) * (r1 + 50)], [cos(a2) * (r1 + 50), sin(a2) * (r1 + 50)]]);
circle(r = r2);
}
difference() {
circle(r=r1 + 100);
circle(r=r1);
}
}
}

This 2D geometry can be extruded easily with:

linear_extrude(height = h) {
arc(r1, r2, a1, a2);
}