Здравствуйте.
У меня есть пара вопросов, надеюсь на помощь в виде направления "куда копать". Мне нужно по заданным точкам строить кривую линию. Реализовано будет все в виде программы, где пользователь будет задавать точки, а программа по ним строить линию. Почему не устраивают готовые графические пакеты и т. п.: мне нужны "внутренности" алгоритма и промежуточные данные, получающиеся в процессе вычисления координат точек при выводе на экран (я пока полагаю, что мне это пригодится). Почему не устраивает готовый код: мне все равно нужно разобраться в геометрических основах методов построения, разбираться я все равно буду дольше, чем свой код писать. Пока мне удалось найти следущее: 1. Кривые Безье. Просто и понятно. Алгоритм рисования написал буквально за считанные минуты, разобраться - очень просто (достаточно было посмотреть gif анимацию в Википедии в статье про них). Но есть ряд особенностей, которые мне не нравятся. Например то, что изменение координат одной точки изменяет форму всей кривой. Я пробовал разбивать кривую на несколько кривых (плюс пара ухищрений для сохранения гладкости в местах разбиения) - в принципе, выглядит неплохо, но объяснить пользователю, что я намалевал и как оно работает, в таком варианте выглядит непростой задачей. 2. Сплайны. Немного сложнее, но одной Википедии уже не достаточно. Пока вдумчиво не читал. 3. NURBS (подвид сплайнов, как я понимаю). Какая-то мозголомная математика, я нашел один сайт с объяснением, как строить кривую, там было десять страниц трехэтажных формул. Либо я нашел не то, что нужно, либо NURBS мне не подходит. При этом разных видов сплайнов, как я понимаю, вагон и маленькая тележка, просто понять, чем они друг от друга отличаются, уже не просто. Хотелось бы совета, что попробовать (и что про это почитать). Главное пожелание к алгоритму - простота (и для понимания, и для вычисления). Еще хотелось бы, чтобы кривая проходила через опорные точки, и изменение положения точки не затрагивало всю кривую. Английский немного знаю, можно ссылки на английские источники.
|