Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.07.2011, 13:54   #1
AnderoN
Пользователь
 
Регистрация: 05.05.2011
Сообщений: 14
По умолчанию Построение графика в Image (по принятым значениям)

Всем доброе время суток, помогите пожалуйста.
Есть программа, которая рисует график в поле Image, вот код процедуры, которая осуществляет построение:

Код:
Type TFunc = function (x: real): real;

procedure DrawGraph (f: TFunc; a: real; b: real; C: TCanvas);

var x, y, h: real;

    max, min: real;

    sx, sy: real;

    xmid, ymid: integer;

begin

 sx := (c.ClipRect.Right)/(b-a);

 h := 1/sx;

 xmid := c.ClipRect.Right div 2;

 ymid := c.ClipRect.Bottom div 2;

 x := a;

 max := f( x);

 min := max;

 while x<=b do

   begin

     y := f( x);

     if y<min then min := y;

     if y>max then max := y;

     x := x + h;

   end;

  sy := c.ClipRect.Bottom/ (max-min);

  c.Brush.Color := clBlack;

  c.FillRect(Rect(0, 0, c.ClipRect.Right, c.ClipRect.Bottom));

  c.Pen.Color := clYellow;

  c.MoveTo(0, ymid);

  c.LineTo(c.ClipRect.Right, ymid);

  c.MoveTo(xmid, 0);

  c.LineTo(xmid, c.ClipRect.Bottom);

  x := a;

  y := f(x);

  c.Pen.Color := clWhite;

  c.MoveTo(xmid+round(sx*x), ymid-round(sy*y));

  while x<=b do

    begin

      y := f(x);

      c.LineTo(xmid+round(sx*x), ymid-round(sy*y));

      x := x + h;

    end;

end;
А вот сама программа, которая использует выше упомянутую процедуру построения графика:

Код:
Function f(x: real): real;

 begin

   Result := sin(x)*cos(x);

 end;

 

procedure TForm1.Button1Click(Sender: TObject);

 begin

   DrawGraph (f, -10, 10, Image1.Canvas);

 end;

При нажатии на кнопку мы получаем график, который указан в function f(x:real), в данном случае это sin(x)*cos(x).

Мне же необходимо, чтобы график строился по точкам ( то есть я не задаю функцию формулой, а у меня после некоторых измерений на компьютер приходит набор точек, если быть точнее значения амплитуды в зависимости от градусов поворота установки). Подскажите пожалуйста, как сделать, чтобы не забивать функцию, а при нажатии на кнопку график строился по точкам? Программирую в Delphi7
AnderoN вне форума Ответить с цитированием
Старый 07.07.2011, 14:00   #2
Wicort
Форумчанин
 
Аватар для Wicort
 
Регистрация: 04.08.2009
Сообщений: 684
По умолчанию

Здесь, на мой взгляд вообще не нужны никакие функции.
Просто вводите в программу пары значений (x,y) и сортируете их по координате x.
Затем рисуете линии по последовательности точек.
Еслия Вам помог, не поленитесь нажать на весы и оставить отзыв. Это не займет много времени, но даст понять, что я старался не зря =)
Мой ник зарегистрирован, а твой?
Wicort вне форума Ответить с цитированием
Старый 07.07.2011, 14:14   #3
AnderoN
Пользователь
 
Регистрация: 05.05.2011
Сообщений: 14
По умолчанию

Если нетрудно объясните пожалуйста подробнее, что значит сортировать по координате х?
AnderoN вне форума Ответить с цитированием
Старый 08.07.2011, 09:21   #4
Wicort
Форумчанин
 
Аватар для Wicort
 
Регистрация: 04.08.2009
Сообщений: 684
По умолчанию

это значит, что ваш набор координат должен быть в таком порядке, чтобы координата х шла по порядку, от меньшей к большей.
например, если Вы получили такой набор:
(5;7), (2;4), (3;1), (-2;3)
То его нужно расположить в порядке возрастания х
(-2;3), (2;4), (3;1), (5;7)
Далее рисовать линии от точки к точке.
Еслия Вам помог, не поленитесь нажать на весы и оставить отзыв. Это не займет много времени, но даст понять, что я старался не зря =)
Мой ник зарегистрирован, а твой?
Wicort вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
построение графика salwator Паскаль, Turbo Pascal, PascalABC.NET 0 13.06.2011 02:16
Построение графика Наталия 555 Помощь студентам 5 12.06.2011 08:56
построение графика зависимости с использованием TChart по значениям из dbgrid redneckoder Помощь студентам 2 04.06.2011 15:09
Построение гарфиков по известным значениям(Delphi) Omni Помощь студентам 2 20.10.2010 13:15
Построение графика! kiling Мультимедиа в Delphi 0 19.05.2009 21:03