(столкнулся с вашим вопросом, когда искал то же самое, и случайно соединил что-то свое)
http://willowsystems.github.com/jSignature/#/about/linesmoothing/
(SEO-совместимая ссылка на тот же:
http://willowsystems.github.com/jSignature/%2523%252Fabout%252Flinesmoothing%252F.html)
Проблема, которую вы описываете, имеет две стороны.
1. Вы хотите «упростить» сбор данных.
2. Вы хотите нарисовать красивую линию («подогнать кривую») внутри точек.
Упомянутый выше Simplify.js действительно хорош, но он только дает вам очки. Для jSignature мы хотели создать суперэффективный, не запаздывающий алгоритм подбора кривой.
См. Ссылку выше для объяснения одного (нашего) подхода к подгонке (Безье или кубической) кривых между точками. Это позволяет вам удерживать линию, которую нарисовал пользователь, и просто отставать при соединении двух последних координат, или вы можете упростить и перерисовать всю линию таким образом.
(Наша публикация алгоритма была преднамеренной, чтобы установить «известный уровень техники» и исключить возможность использования комбинированного метода. Это означает, что мы не ставим наше собственное патентное ярмо на алгоритм и, тщательно его искали и не нашли он может быть запатентован в другом месте. Конечно, может быть какой-то патентный тролль, который может столкнуться с проблемой при реализации вами метода, но, по крайней мере, не у нас. Так что наслаждайтесь.)
Демонстрационная ссылка использует 4-пиксельный пропуск при перемещении мыши. Это грубо, но хорошо для «упрощения» данных в режиме реального времени. Если вы можете позволить себе захватить весь ход и перерисовать все это, то, конечно же, используйте simpleify.js.