Перейти к содержанию
СофтФорум - всё о компьютерах и не только

Кривая через несколько точек


Рекомендуемые сообщения

Привет всем. :(

Возникла следующая проблема. Есть несколько точек, точнее около десяти. Все расположены в ряд слева направо. Расстояние между ними по оси OX равное. Высота, т.е значения по оси OY разные. Если соединить все эти точки получется ломанная кривая с острыми углами в точках.

Вопрос: По каким формулам, алгоритму и т.д. через данные точки провести гладкую кривую, не ломанную. :bye1: Причем если двигать любую точку вверх/вниз то гладкая кривая выпрямляется (сглаживается) или наоборот стремится к заострению изгиба? По какому закону рисовать эту линию?

зы Примером такой линии может служить график эквалайзера в Winampе.

Ссылка на комментарий
Поделиться на другие сайты

dvaman:

Это называется интерполяцией функций. Так как разных видов гладких кривых, проходящих через заданные точки, можно придумать много, то соответственно существует и много разных алгоритмов. Пару наиболее распространенных посмотри, например, тут и тут.

P.S. Закон, по которому строится кривая, обычно выбирается близким к тому, по которому изогнулась бы пружинящая лента или струна, если обвести ею колышки, вколоченные в данных точках в деревянную доску. Интерполяционная кривая по второй ссылке ближе к этому закону и выглядит лучше при большом числе точек, так что советую предпочесть ее. Алгоритм счета у нее намного сложнее, но так как все эти алгоритмы уже давно существуют в виде готовых текстов программ, это не страшно.

Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

  • 3 недели спустя...

Ничего точного не скажу, ибо искать лениво, но по хорошему нужно юзать кривые безье. Рисуешь эту самую ломаную линию, каждое ее звено должно быть касательной к кривой в данной точке (в точке перелома или середины каждого звена - точно не помню), а длина каждого звена вроде будет радиусом кривизны в данной точке. Далее открываешь справочник по черчению, там должно быть написано что с касательными делать. (раздел должен называться спряжения)

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...