Я работаю над приложением, которое записывает штрихи, которые вы рисуете указательным устройством.
На изображении выше я нарисовал один такт, который содержит 453 точки данных. Моя цель состояла бы в том, чтобы резко уменьшить количество точек данных, сохраняя при этом форму первоначального хода.
Для тех, кого интересуют, координаты для инсульта, изображенные выше, доступны как gist на GitHub.
По сути, Adobe Illustrator имеет отличную реализацию того, чего я пытаюсь достичь. Если я рисую аналогичный штрих (с каллиграфической кистью) в Illustrator, получившаяся форма будет упрощена до того, что мы увидим ниже. При рисовании штриха он будет очень похож на тот, который содержится в моем приложении. Как только я отпущу кнопку мыши, кривая будет упрощена до того, что мы видим здесь:
Как мы видим, инсульт имеет только 14 точек данных. Хотя есть дополнительные контрольные точки, которые определяют наклон сплайна сплайна (или любого другого сплайна, который они используют). Здесь мы видим несколько таких контрольных точек:
Я рассмотрел такие алгоритмы, как алгоритм Рамера-Дугласа-Пиккера, но они, похоже, только удаляют точки из набора ввода. Если я не ошибаюсь, подход, который я ищу, также должен был бы ввести новые точки в набор для достижения желаемой кривой.
Я столкнулся с такими вопросами, как iPhone сглаживающий алгоритм рисования эскиза, который кажется связанным. Но они, похоже, сосредоточены на создании гладкой кривой из небольшого набора входных точек. Я чувствую, что у меня есть противоположный случай.