На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Название темы должно быть информативным !
Прежде чем задать вопрос, воспользуйтесь Поиском. и проверьте в FAQ (ЧАВО) Паскаля
Чтобы получить вразумительный ответ, подробно опишите проблему: что надо сделать, что не получается и номер ошибки (если есть), которую выводит компилятор.
Для вставки кода ваших программ используйте, пожалуйста, кнопку СODE=pas или выпадающий список СODE для других языков (подсветка синтаксиса).
[!] Как правильно задавать вопросы | Руководство по языку B.Pascal 7 & Objects/LR | Borland Pascal. Руководство пользователя
Модераторы: volvo877
Страницы: (2) 1 [2]  все  ( Перейти к последнему сообщению )  
> 3 Spline
    А если вместо x и y взять конкретное значение?
    Вот я взял и ничего не ваышло
    ExpandedWrap disabled
      x1 := 5;
      y1 := 25;
      x2 := round(6.25);
      y2 := round(39.0625);
      x3 := round(7.5);
      y3 := round(56.25);

    И для моей программы ведь надо брать процедуру BSpline или Catmull_Rom_Spline? (и чем они отличаются).
    Вот именно для той процедуры , которая мне нужна, приведи пожалуйста пример.
      Xn,Yn - то координаты на экране, то есть пиксели (целые числа)!

      Добавлено
      Цитата Eugie
      Способов интерполяции много, наиболее практичный - с помощью сплайнов.

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

      Например, для кубических сплайнов имеем: пусть (x[1],y[1]),...,(x[N],y[N]) - набор узлов; F[n](x):=a[n]*x^3+b[n]*x^2+c[n]*x+d[n], n:=1,...,N-1 - набор кубических многочленов. Тогда система уравнений

      F [n](x[k]) := y[k], n:=(1..N-1), k:=(n,n+1),
      F' [n](x[n+1]) := F' [n+1](x[n+1]), n:=(1..N-2),
      F''[n](x[n+1]) := F''[n+1](x[n+1]), n:=(1..N-2),
      F''[1](x[1]) := 0, F''[N](x[N]) := 0 (эти два условия произвольные)

      однозначно определяет коэффициенты многочленов для построения кубического сплайна. Действительно, имеем 4(N-1) переменных a[n],b[n],c[n],d[n] для n := (1..N-1) и столько же уравнений.

      Описанная схема не самая эффективная, в литературе можно найти алгоритмы построения сплайнов, требующие решения всего N+1 линейных ур-й, причем прогонкой. Рекомендую помотреть, например, справочник по математике Бронштейна и Семендяева.


      В Дельфи для построения используются методы PolyBezier и PolyBezierTo класса Canvas.
      Цитата
      Строит кривую Безье (кубический сплайн), используя массив координат точек Points


      Добавлено
      Почитай также и это:
      Линии Безье
      Использование кривых Безье
        Цитата
        Xn,Yn - то координаты на экране, то есть пиксели (целые числа)

        Значит кокретные числе нельзя брать?(и какие например можно?)
        Для моей программы надо брать процедуру BSpline или Catmull_Rom_Spline?
          Цитата Falex @
          Значит кокретные числе нельзя брать?(и какие например можно?)

          целые числа - это ординарные типы Byte,Word,Integer,Longint. Что будешь вставлять вместо параметров в функцию: константы, переменные или результаты функций - компилятору до лампочки. Я ясно выражаюсь? :rolleyes:

          Цитата Falex @
          Для моей программы надо брать процедуру BSpline или Catmull_Rom_Spline?

          По-моему, всё-таки процедура CubicBezierCurve. Тебе ведь нужен кубический сплайн.

          Falex, ты читал то, что я тебе давал?

          Если проблема именно в отображении сплайна, то тебе надо задавать масштаб увеличения Scale вещественного типа:
          X1 := Random (Scale * 7.5);
          Scale должна быть не менее 10.0, но и не слишком большая, иначе кривая выйдет за пределы экрана.
            Попробовал вот так, но почему-то pascal из малоэкранного режима при компиляции переходит в полноэкранный,где ни
            одна клавиша не работает, кроме Windows.
            ExpandedWrap disabled
              Scale:=75;
              InitGraph (gd, gm, 'c:\pascal');
              ClearDevice;
              x1 := random (8*Scale);
              y1 := random (10*Scale);
              x2 := random (10*Scale);
              y2 := random (12*Scale);
              x3 := random (12*Scale);
              y3 := random (14*Scale);;
              Curve (x1, y1, x2, y2, x3, y3, segments);
              CloseGraph;
              end.

            И какой всё таки пример для моей функции
            (P.S>исходники на Delphi смотрел,но это же не pascal - и сама задача стоит по иному)
              Цитата Falex @
              ExpandedWrap disabled
                Scale:=75;
                InitGraph (gd, gm, 'c:\pascal');
                ClearDevice; {зачем это здесь нужно???}
                x1 := random (8*Scale);
                y1 := random (10*Scale);
                x2 := random (10*Scale);
                y2 := random (12*Scale);
                x3 := random (12*Scale);
                y3 := random (14*Scale);;
                Curve (x1, y1, x2, y2, x3, y3, segments);
                 
                    {А где задержка перед выходом из программы???}
                 
                CloseGraph;
                end.
              :huh:

              Перед CloseGraph обязательно должна быть какая-то задержка, чтобы пользователь смог что-то увидеть перед закрытием программы. Вставь Readln;
              У тебя при запуске программы графический режим устанавливается, потом сразу же и закрывается. :lol:

              Вижу, что с Паскалем у тебя туго. :ph34r:
                И какой всё таки пример для моей функции!
                  Ну сам, в конце концов, можешь подумать? Почитать где-то. Или за тебя все должны искать и предлагать готовые решения? <_<
                  1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                  0 пользователей:


                  Рейтинг@Mail.ru
                  [ Script execution time: 0,0275 ]   [ 14 queries used ]   [ Generated: 17.05.24, 16:25 GMT ]