Заставить qhull/qvoronoi ограничивать Вороного выпуклой оболочкой или заданным многоугольником

Плоская мозаика Вороного всегда будет иметь неограниченные многоугольники (бесконечные области).

Как указать qhull/qvoronoi пересекать тесселяцию либо с выпуклой оболочкой исходных точек, либо с многоугольником, который я явно указываю (возможно, прямоугольником).

Конкретный пример ( https://github.com/barrycarter/bcapps/blob/master/bc-temperature-voronoi.pl ):

  • Я сопоставляю широту/долготу (неточно) с двумерным прямоугольником (-180,180)*(-90,90) и применяю qvoronoi к результату.

  • Я не могу работать с неограниченными многоугольниками, а Google Maps API не любит многоугольники, выходящие за пределы (-180,180)(-90,90) [на самом деле это больше похоже на (-180,180)(-85,85), потому что Google использует Меркатор]

  • Могу ли я заставить qhull/qvoronoi пересекать многоугольники с выпуклой оболочкой точек и/или прямоугольником (-180,180)*(-90,90)? Конечно, выпуклая оболочка полностью содержится внутри прямоугольника.

  • Если нет, может ли это сделать другая программа? Я подозреваю, что мог бы написать это сам, но предпочел бы существующее решение.


person Community    schedule 08.05.2011    source источник