Комментарии к существующим ответам:
Мне кажется, что ответ Мау и Мартиента описывает решение проблемы приближения известной формы с полигональной сеткой (а у вас нет известной формы).
Алгоритм, который упоминает Дейв, сгладит любую форму, но не обязательно по назначению.
Если вы посмотрите на ответ Тебя, вы увидите, что новые точки появляются в результате линейной интерполяции между точками, и, если это достаточно хорошо для вас, все решения сравнимы (кроме Дейва).
Такое увеличение плотности сетки не сделает полученную сетку более привлекательной - более похожей на исходную форму. Если этого недостаточно, то сначала вы должны решить, какую именно форму / форму вы пытаетесь представить с помощью сетки (если вы могли бы расширить свой пример, это могло бы быть немного более очевидным; этот инструмент создает только круговые сетки). или это может принять любую форму и «заполнить сеткой» это?).
Кроме того, вы должны заметить, что вы работаете не с полигональной сеткой, а с сеткой кривых (вероятно, bezier ), что является еще одной причиной, по которой некоторые ответы не будут напрямую применяться к вашему проблема.
EDIT:
После более внимательного изучения того, как это делает corel, и предположения, что вы действительно знаете кривые, а не только точки (!):
- Вы начинаете с набора кривых, и мне кажется, что у вас есть горизонтальные и вертикальные кривые, чтобы начать с
- Если вы хотите увеличить разрешение (например, разрешение по горизонтали), вы можете взять две последовательные вертикальные кривые и разделить каждый сегмент горизонтальных кривых, через которые они проходят, в точке в середине , создавая таким образом набор точек которые определяют новую кривую; Вы также можете интерполировать угол, под которым кривая проходит через точку
альтернативный текст http://img706.imageshack.us/img706/5693/path5818.png
Приведенное выше (нарисованное вручную) изображение показывает попытки проиллюстрировать
а) добавление новой кривой (красной), которую вы бы сгенерировали таким образом.
б) добавление линейно-интерполированной полилинии (синего цвета), которая больше подходит для подхода с использованием многоугольной сетки (так что вы можете судить, приемлемо ли это для вас)
Примечание : В зависимости от алгоритма, для которого вы готовите сетку, вы можете иметь или не иметь никаких преимуществ, рассматривая линии сетки как кривые (различие между красным и синим растворами может быть незначительным для некоторых алгоритм и важно для других). Если алгоритм просто ожидает точки, то вам также следует посмотреть, как аппроксимировать кривые Безье с точками (чтение может помочь ; хотя вам не нужна точность пикселей).
Для достижения максимальной точности / наилучших результатов вы должны сначала увеличить плотность кривых и приблизить их с помощью линий.