Комментарии к существующим ответам:
Мне кажется, что Мау и ответ martient описывают решение задачи аппроксимации известной формы с polygon mesh (и не имеют известную форму) ,
Алгоритм, который упоминает Дэйв, сглаживает любую форму, но не обязательно намеченным образом.
Если вы посмотрите на ответ «Вы», вы увидите, что новые точки исходят из линейной интерполяции между точками, и если это достаточно хорошо для вас, все решения сопоставимы (кроме Дэйва).
Такое увеличение плотности сетки не будет сделать полученную сетку более привлекательной - более похожей на оригинальную форму. Если это не достаточно хорошо, вам сначала нужно решить, какова фактическая форма/форма, которую вы пытаетесь представить с помощью сетки (если бы вы могли расширить свой пример, это может быть немного более очевидным: этот инструмент создает только круглые сетки или он может принять любую форму и «заполнить сетку»?).
Кроме того, вы должны заметить, что вы не работаете с многоугольной сеткой, но с сеткой кривых (возможно, bezier), что является еще одной причиной, по которой некоторые из ответов не будут непосредственно применяться к вашей проблеме.
EDIT: После присмотревшись о том, как Corel делает это и при условии, что вы на самом деле знаете, кривые не только точки (!):
- Вы начинаете с набором кривых, и кажется, для меня, что у вас есть горизонтальные и вертикальные кривые, начинающиеся с
- Если вы хотите увеличить разрешение (например, разрешение по горизонтали), вы можете взять две последовательные вертикальные кривые и разделить каждый сегмент горизонтальных кривых, проходящих через , тем самым создавая множество точек, определяющих новую кривую; вы можете также интерполировать угол, при котором кривая проходит через точку
alt text http://img706.imageshack.us/img706/5693/path5818.png
выше (вручную обращается) изображение показывает пытается проиллюстрировать а) добавление новой кривой (красный), что вы бы генерировать таким образом. б) добавление линейно интерполировать полилинию (синий), который идет больше в сторону сетки подхода многоугольника (так что вы можете судить, если это приемлемо для вас)
Примечание: В зависимости от алгоритма, для которого вы готовите сетки вы могли бы или не иметь никаких преимуществ при рассмотрении линий сетки как кривых (разница между красными и синими решениями может быть незначительной для определенного алгоритма и важна для других). Если алгоритм просто ожидает точек, тогда вы также должны посмотреть, как аппроксимировать кривые Безье с точками (чтение через this может помочь, хотя вам не нужна точность пикселей).
Для достижения максимальной точности/наилучших результатов вы должны сначала увеличить плотность кривых и приблизить их к линиям.
Работает ли эта «сетка» на любой фигуре или создает только сетки для кругов? Мне непонятно, как это работает. Кроме того, каково значение цветов. – Unreason
@Unreason Любая форма. В моем случае я действительно ищу способ увеличить разрешение для сетки на прямоугольнике. * Наверное, этот круг был не лучшим образцом ... * На самом деле, я мог бы задать вопрос без этой картины. –
Хорошо, я посмотрел http://www.corel.com/servlet/Satellite?pagename=Corel3/Section/Display&sid=1047024315119&gid=1047024331836&cid=1047022730336 и он работает для любой формы. Если вы хотите реализовать/понять, я не думаю, что вы можете смотреть только на точки, вам придется рассмотреть кривые и их внутреннее представление. – Unreason