dvaman Опубликовано 16 июня, 2005 Жалоба Поделиться Опубликовано 16 июня, 2005 Привет всем. :( Возникла следующая проблема. Есть несколько точек, точнее около десяти. Все расположены в ряд слева направо. Расстояние между ними по оси OX равное. Высота, т.е значения по оси OY разные. Если соединить все эти точки получется ломанная кривая с острыми углами в точках. Вопрос: По каким формулам, алгоритму и т.д. через данные точки провести гладкую кривую, не ломанную. Причем если двигать любую точку вверх/вниз то гладкая кривая выпрямляется (сглаживается) или наоборот стремится к заострению изгиба? По какому закону рисовать эту линию? зы Примером такой линии может служить график эквалайзера в Winampе. Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 16 июня, 2005 Жалоба Поделиться Опубликовано 16 июня, 2005 (изменено) dvaman: Это называется интерполяцией функций. Так как разных видов гладких кривых, проходящих через заданные точки, можно придумать много, то соответственно существует и много разных алгоритмов. Пару наиболее распространенных посмотри, например, тут и тут. P.S. Закон, по которому строится кривая, обычно выбирается близким к тому, по которому изогнулась бы пружинящая лента или струна, если обвести ею колышки, вколоченные в данных точках в деревянную доску. Интерполяционная кривая по второй ссылке ближе к этому закону и выглядит лучше при большом числе точек, так что советую предпочесть ее. Алгоритм счета у нее намного сложнее, но так как все эти алгоритмы уже давно существуют в виде готовых текстов программ, это не страшно. Изменено 16 июня, 2005 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
S|lent Опубликовано 5 июля, 2005 Жалоба Поделиться Опубликовано 5 июля, 2005 Можно воспользоваться сплайнами, больше подойдёт B-сплайн. www.codenet.ru Ссылка на комментарий Поделиться на другие сайты Поделиться
<-=RamZeS=-> Опубликовано 5 июля, 2005 Жалоба Поделиться Опубликовано 5 июля, 2005 Ничего точного не скажу, ибо искать лениво, но по хорошему нужно юзать кривые безье. Рисуешь эту самую ломаную линию, каждое ее звено должно быть касательной к кривой в данной точке (в точке перелома или середины каждого звена - точно не помню), а длина каждого звена вроде будет радиусом кривизны в данной точке. Далее открываешь справочник по черчению, там должно быть написано что с касательными делать. (раздел должен называться спряжения) Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти