На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! правила раздела Алгоритмы
1. Помните, что название темы должно хоть как-то отражать ее содержимое (не создавайте темы с заголовком ПОМОГИТЕ, HELP и т.д.). Злоупотребление заглавными буквами в заголовках тем ЗАПРЕЩЕНО.
2. При создании темы постарайтесь, как можно более точно описать проблему, а не ограничиваться общими понятиями и определениями.
3. Приводимые фрагменты исходного кода старайтесь выделять тегами code.../code
4. Помните, чем подробнее Вы опишете свою проблему, тем быстрее получите вразумительный совет
5. Запрещено поднимать неактуальные темы (ПРИМЕР: запрещено отвечать на вопрос из серии "срочно надо", заданный в 2003 году)
6. И не забывайте о кнопочках TRANSLIT и РУССКАЯ КЛАВИАТУРА, если не можете писать в русской раскладке :)
Модераторы: Akina, shadeofgray
  
> Кривые , Прорисовка кривых линий
    Кто подскажет алгоритм прорисовки кривых линий между точками?
      Метод сплайнов. Слышал?
        QUOTE (voidman @ 10.11.03, 14:34)
        Метод сплайнов. Слышал?

        Нет, можно подробнее, или линки.
          QUOTE (Zipo @ 10.11.03, 14:19)
          QUOTE (voidman @ 10.11.03, 14:34)
          Метод сплайнов. Слышал?

          Нет, можно подробнее, или линки.

          www.google.com biggrin.gif
            Задача еще раз.
            Есть N точек с координатами X и Y.

            Надо провести между ними плавную кривую.

            Так?
              Хм. Интересная тема.
              Кто разбирался - расскажите, плиз.
              Тут тоже интересно послушать будет.
                Вот например такой вариант:
                Есть некоторая последовательность точек, рассмотрим четыре точки идущие подряд в этой последовательности: v0, v1, v2, v3.
                Теперь просто вызвав эту функцию с х от 0 до 1, получим плавную кривую между точками v1 и v2.
                CODE
                function Cubic_Interpolate(v0, v1, v2, v3,x)
                P = (v3 - v2) - (v0 - v1)
                Q = (v0 - v1) - P
                R = v2 - v0
                S = v1
                return Px3 + Qx2 + Rx + S
                 end of function

                Вот еще пример для TP7.
                Сообщение отредактировано: albom -

                Прикреплённый файлПрикреплённый файлSPLINE1.PAS (1.5 Кбайт, скачиваний: 488)
                  Я лишь распишу проблему с математической точки зрения. Раздел "Алгоритмы" позволяет это сделать. А там уже на усмотрение - на каком языке это реализовать.

                  Итак мы имеем N точек. Чтоьы не стало скучно от всех этих математических выкладок примем, что N=3. У каждой точки координаты V1,2,3(x,y) .

                  Итак пусть это точки v1(3,5), v2(4,8) и v3(6,12).

                  С математической точки зрения функция должна

                  1. Быть определенной во всех точках;
                  2. Не терпеть разрывов
                  3. Быть плавной.

                  Возьмем уравнение порядка N-1, т.е. 2-го порядка, удовлетворяющего поставленным условиям.

                  Y = AX^2 + BX + C

                  Составим три уравнения для трех точек, подставив координаты X и Y для каждой точки.

                  9A + 3B + C = 5
                  16A + 4B + C = 8
                  36A + 6B + C = 12

                  Решаем эту систему уравнений, получаем коэффициенты.

                  A = - 0.3333
                  B = 5.3333
                  C = - 8

                  Строим график, видим - он плавный.

                  user posted image

                  Если точек было больше, то берем по три точки , лучше с перекрытием хотя бы в одну.

                  Кстати предложенный albom-ом метод кусочно трилинейной интерполяции как раз и есть реализация выше описанного.

                  А алгоритмическую часть я попытался отразить.
                      Zipo
                      А ежели ищешь методы попроще, то глянь сюда:
                      http://astronomy.swin.edu.au/~pbourke/anal.../interpolation/
                        Привет всем. Генетический алгоритм - РУЛЬ. :yes:
                          спасибо за инфу(даже при том, что не Я о ней просил ;) )
                          К слову - через гугль за месяй поиска нашёл кучу ссылок, но ничего информативного :(
                            ПОИСК: B-spline (кривая B-сплайн)
                            ПОИСК: Bezier curve (кривые Безье)
                              Romtek, а можно тут "спасибо" сказать?
                              Или это как akel будет удалено? :tong:
                                простите, "akel" - это типа "флуд" ;)
                                У меня KeyboardNinja стоиТ, а он такого слова не знает :)
                                [off] Это уже точно флуд - можно удалять :) [/off]
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0.4684 ]   [ 15 queries used ]   [ Generated: 6.10.26, 00:02 GMT ]