Как уменьшить количество точек кривой при сохранении ее общей формы?
У меня есть список точек, которые образуют кривую, и я хотел бы уменьшить количество точек, но при этом сохранить общую форму кривой.
В принципе, я хочу перейти от этого:
К этому:
Таким образом, алгоритм удалит точки, которые являются избыточными, но сохранят те, которые действительно определяют форму (например, точки внизу кривой). Есть какой-нибудь известный алгоритм для этого? Я ожидаю, что есть, но я не уверен, что искать в Google. Любая помощь будет оценена.
2 ответа
Для этого есть несколько алгоритмов.
Самый простой из них, вероятно, состоит в том, чтобы просто удалить точку, угол между соседними точками которой ближе всего к 180 градусам, до некоторого порога или до тех пор, пока вы не достигнете желаемого количества точек.
Если кривая плавная, как на вашей картинке, вы, вероятно, получите лучшие приближения (или меньше точек, если вам так нравится), например, используя кривые Безье.