| 12345678910111213141516171819202122232425 |
- module pie_slice(radius, start_angle, end_angle) {
- R = radius * sqrt(2) + 1;
- a0 = (4 * start_angle + 0 * end_angle) / 4;
- a1 = (3 * start_angle + 1 * end_angle) / 4;
- a2 = (2 * start_angle + 2 * end_angle) / 4;
- a3 = (1 * start_angle + 3 * end_angle) / 4;
- a4 = (0 * start_angle + 4 * end_angle) / 4;
- m = 2;
- if(end_angle > start_angle) {
- intersection() {
- circle(r=radius);
- polygon([
- [0,0],
- [R * m * cos(a0), R * m * sin(a0)],
- [R * m * cos(a1), R * m * sin(a1)],
- [R * m * cos(a2), R * m * sin(a2)],
- [R * m * cos(a3), R * m * sin(a3)],
- [R * m * cos(a4), R * m * sin(a4)],
- [0,0]
- ]);
- }
- } else {
- pie_slice(radius, end_angle, start_angle);
- }
- }
|