#графика #математика
Для своего диплома я хочу сделать компонент (если не получится, то фиг с ним:), который при рисовании линии (я использую WPF InkCanvas) превращал бы эту линую в график. Ну то есть выпрямлял посильнее. Не силен в математике, поэтому не знаю, что мне нужно использовать для этого. В качестве входных данных имеется набор точек. Что можно применить?
Ответы
Ответ 1
Для этих целей уже есть готовый алгоритм Рамера-Дугласа-Пекера Он вроде применяется в векторных графических редакторах и картографии. И еще список алгоритмов делающих тоже самое: Visvalingam–Whyatt algorithm Reumann–Witkam algorithm Opheim simplification algorithm Lang simplification algorithm Затем полученную ломанную можно превратить в красивую кривую каким-нибудь алгоритмом интерполяции или использовать точки как опорные для построения кривых Безье.Ответ 2
Решение в лоб: взять крайние точки исходной линии, найти равно распределенные точки "изломов". Получаем промежутки-условия. Потом для каждого такого промежутка ищем точки, которые в него попадают и находим простейшее среднеарифметическое значение для X и для Y. Получим усредненные значения на участках, соединим их точками - тот же график, но менее детализированный. Больше точек - больше изломов - картинка ближе к графику.
Комментариев нет:
Отправить комментарий