У меня есть несколько кругов (в виде списка связанных вершин) в случайных позициях.
Когда окружности пересекаются, создаются замкнутые области (как на диаграмме Венна http://en.wikipedia.org/wiki/Venn_diagram)
Как создать отдельные полигоны всех этих областей? Цель состоит в том, чтобы иметь возможность раскрасить каждую область отдельным полигоном, как в этом примере:
Возможно ли общее решение с итеративными булевыми операциями пересечения?
ИЗМЕНИТЬ
Следующий простой фрагмент представляет собой скрипт [NodeBox](http://nodebox.net/code/index.php/Home)
, рисующий пересекающиеся эллипсы.
oval(x0,y0,w,h)
создает эллипс.
Согласно документу, логические операции над путями, такими как p[19].difference(p[17])
, дадут "плоский" результат. («состоит из многочисленных отрезков прямой линии»).
Координаты пути могут быть добавлены или изменены.
size(500, 500)
p = []
s = 54
nofill()
stroke(0)
for k in xrange(10):
w = 10+k*s/2
w2 = 10+k*s
h = 10+k*s
h2= 10+k*s
p.append( oval(WIDTH/2 - w/2, HEIGHT/2 - h/2, w, h, draw=False))
p.append( oval(WIDTH/2 - w2/2, HEIGHT/2 - h2/2, w2, h2, draw=False))
cp = p[19].difference(p[17]).intersect(p[18], flatness = 0.3)
for pi in p:
drawpath(pi)
fill(color(1,0,0))
drawpath(cp)