Yup, lots of circles, intersections, differences and offsets went into this attempt at the logo of my favourite museum.
For the determined/demented, here’s the source. It’s probably not that useful for learning OpenSCAD, as it’s written in my typical “carve away all the bits that don’t look like an elephant†style:
// akm logo - why yes this *is* a good tool to use ...
// constants for octagon maths
r1 = 1 - sqrt(2) / 2;           // ~0.292893
r2 = sqrt(r1);                  // ~0.541196
x1 = (sqrt(2) - 1) / 2;         // ~0.207107
sc = 100;                       // size factor
t = 4;                          // line thickness
bigt = 7;                       // strapwork gap thickness
$fn = 256;                      // OpenSCAD circle smoothness
module petal() {
    intersection() {
        translate([ sc * x1, sc * x1])circle(r = sc * r2);
        translate([-sc * x1, sc * x1])circle(r = sc * r2);
    }
}
module hollow_petal() {
    difference() {
        offset(r =  t / 2)petal();
        offset(r = -t / 2)petal();
    }
}
module inner_lobe() {
    difference() {
        for (i = [0:3]) {
            rotate(i * 90 + 45)offset(r = t / 2)petal();
        }
        for (i = [0:3]) {
            rotate(i * 90 + 45)offset(r = -t / 2)petal();
        }
    }
}
module ring() {
    for (i = [0:3]) {
        rotate(i * 90)difference() {
            intersection() {
                inner_lobe();
                union() {
                    offset(r = -bigt / 2)petal();
                    rotate(45)offset(r = t / 2)petal();
                }
            }
            rotate(90)offset(r = bigt / 2)petal();
        }
    }
}
module logo() {
    union() {
        ring();
        for (i = [0:3]) {
            rotate(90 * i)union() {
                intersection() {
                    hollow_petal();
                    rotate(-90)offset(r = -bigt / 2)petal();
                }
                difference() {
                    intersection() {
                        hollow_petal();
                        rotate(45)offset(r = -bigt / 2)petal();
                    }
                    rotate(-90)offset(r = bigt / 2)petal();
                }
                
                difference() {
                    hollow_petal();
                    offset(r = bigt / 2)union() {
                        rotate(-90)petal();
                        rotate(45)petal();
                    }
                }       
            }
        }
    }
}
logo();



































