Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Программа построения графика функций






В представленной ниже программе на экран выводится график функции с ис­пользованием свойства Pixels. В этой программе для построения графика использу­ется вся доступная область формы, причем программа написана таким образом, что при изменении размеров окна график выводится заново с учетом новых размеров.. Этапы создания программы:

1. Основную работу выполняет процедура GrOfFunc, которая сначала вычисля­ет максимальное (г/2) и минимальное (г/1) значения функции на отрезке [xl, x2], a затем, используя информацию о ширине и высоте области вывода графика, вычис­ляет масштаб по осям х (тх) и у (ту).

Эту процедуру необходимо поместить в программный модуль в раздел implementation (раздел описания (текста) процедур и функций модуля). Для этого нужно открыть окно редактора кодов и в указанный раздел после директивы {$R *.DFM} поместить следующий текст процедуры (в данном примере рассматривается функция f(x) = 2sin xеx/5 на интервале [0; 25]):

procedure GrOfFunc; { построение графика функции }

var

x1, х2: real; { границы изменения-, аргумента функции }

y1, у2: real; { границы изменения значения функции }

х: real; { аргумент функции }

у: real; { значение функции в точке х }

dx: real; { приращение аргумента }

l, Ь: integer; { левый нижний угол области вывода графика }

w, h: integer; { ширина и высота области вывода графика }

mx, my: real; { масштаб по осям X и Y }

хО, уО: integer; { точка начала координат }

function f (x: real): real; begin

f: =2*sin(x)*exp(x/5); end;

begin

{ область вывода графика }

l: =10; { х-координата левого нижнего угла }

b: =Forml.ClientHeight-20; { у-координата левого нижнего угла }

h: =Forml.ClientHeight-40; { высота }

w: =Forml.ClientWidth-40; { ширина }

x1: =0;. { нижняя граница диапазона аргумента }

х2: =25; { верхняя граница диапазона аргумента }

dx: =0.01; { шаг аргумента }

{ поиск минимума и максимума функции на отрезке [xl, x2] }

y1: =f(xl);

y2: =f (x2);

x: =x1;

repeat y: =f(x);

if y< y1 then y1: =y;

if y> y2 then y2: =y;

x: =x+dx;

until (x> =x2);

my: =h/abs(y2-y1); { масштаб по оси X}

mx: =w/abs(x2-x1); { масштаб по оси Y}

хО: =1;

yO: =b-abs(Round(y1*my));

with form1.Canvas do

begin

MoveTo(l, b); LineTo(l, b-h); MoveTo(xO, yO); LineTo(xO+w, у0);

TextOut(l+5, b-h, FloatToStrF(y2, ffGeneral, 6, 3)); TextOut(l+5, b, FloatToStrF(yl, ffGeneral, 6, 3));

{построение графика}

x: =x1;

repeat y: =f(x);

Forml.Canvas.Pixels[xO+Round(x*mx), yO-Round(y*my)]: =clRed;

x: =x+dx;

until (x> =x2);

end;

end;

2. Вызов процедуры GrOfFunc будет выполнять процедура TForml.FormPain обработки события OnPaint. Эта процедура обеспечит вычерчивание графика после появления формы на экране в результате запуска программы. Для вызова процедуры следует щелчком выделить форму, в окне инспектора объектов выбрать вкладку Events и дважды щелкнуть в поле события OnPaint. Затем в позиции курсора ввести текст процедуры GrOfFunc.

3. Для вычерчивания графика после изменения размера формы используется процедура TForml.FormResize. Она обрабатывает событие OnFormResize, которое происходит при изменении размера формы. Данная процедура сначала должна очистить поверхность формы, а затем вызвать процедуру GrOfFunc для построения графика в соответствии с новыми размерами. Для вызова процедуры TForml.FormResize следует щелчком выделить форму, в окне инспектора объектов выбрать вкладку Events и дважды щелкнуть в поле события OnFormResize. Затем в позиции курсора ввести текст процедуры следующим образом:

 

with forml do

Canvas.FillRect(Rect(0, 0, ClientWidth, ClientHeight)); GrOfFunc;

end;

В результате программный модуль будет иметь следующий вид:

unit graf_f;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs; type

TForm1 = class(TForm)

procedure FormPaint(Sender: TObject); procedure FormResize(Sender: TObject); private

{Private declarations}

public

{Public declarations}

end;

var

Form1: TForm1;

implementation

{$R *.DFM}

procedure GrOfFunc; { построение графика функции }

... здесь размещается текст процедуры

end;

procedure TForml.FormPaint(Sender: TObject};

begin

GrOfFunc; end;

procedure TForml.FormResize(Sender: TObject);

begin

{ очистить форму }

with forml do

Canvas.FillRect(Rect(0, 0, ClientWidth, ClientHeight));

GrOfFunc;

end;

end.

Результаты работы программы представлены на рисунке справа.

 


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.007 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал