1. Start from square
2. 4 random points in square
3. With those points split square in 4 Voronoi cells, contained in square
4. For every Voronoi cell
4a. 4 random points in cell
4b. Split Voronoi cell in 4 new Voronoi cells, contained
in parent cell
5. Repeat
Conversation
Starting from a convex container, the polygons will always be convex, making step 4a more straightforward.
1
1
Oh my gosh I started doing subdivision like this recently to get out of a creative rut and I was pretty sure that it had been done before, but dang some of my recent pics look like direct rip-offs of ! ( too!) 😅 I'll keep trying to find a unique take on it!
2
4
Yep, pretty close :-)
1
3
I am sure it was a fun challenge to figure it out and in particular running into all the edge cases.
1
1
I changed my method in the most recent version: break down each polygon border into lots of points and then repeatedly smooth by averaging. Works pretty well!
2
1
My approach was to use Processing’s curve drawing functionality and use the corners as Bezier control points, no edge cases to solve.
2
1
Yeah they only start happening once you start diving into creating offset polygons which is when corners vanish. Or when you try to fit circle segments into the corners instead of letting beziers do all the hard work.
1
2
Oh my god the offset polygons...I've run away scared from that problem a few times. If I ever think of doing it again I'll steal it from you!
2
2
For convex polys it is getOffsetPolygon() in here - if I remember correctly it worked, but one can never really be sure in computational geometry:


