// Basis of a three point curved tiling from the Alhambra // scruss - 2016 - wtfpl (srsly) module alh(r) { // a single repeat difference() { union() { // 3 circles at 120°, plus a small one to fill centre circle(r/2); for (i=[0:2]) { rotate(i*120)translate([0,r])circle(r); } } // subtract three circles angled outward a bit for (i=[0:2]) { rotate(i*120)translate([-r*sqrt(3),0])circle(r); } } } r=50; // base size of circles; Inkscape imports as px $fn=12; // *must* be divisible by 3 for non-horrible results // useful values: 12 (fast), 24, 36, 48, 60 (v slow) // produce a 10x10 hexagonal grid of elements for (x=[0:9]) { for (y=[0:9]) { translate([((y%2)?r*sqrt(3):0)+x*2*r*sqrt(3),y*3*r])alh(r); } }