Иллюстрированный самоучитель по Delphi 7 для начинающих

Точка

Листинг 10.5. График функции.

unit grfunc_;
interface
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
Forml: TForml;
implementation
{$R *.DFM}
// Функция, график которой надо построить
Function f(x:real):real;
begin
f: = 2*Sin(x)*exp(x/5);
end;
// строит график функции
procedure GrOfFunc;
var
x1,x2:real; // границы изменения аргумента функции
y1,y2:real; // границы изменения значения функции
х:real; // аргумент функции
у:real; // значение функции в точке х
dx:real; // приращение аргумента
l,b:integer; // левый нижний угол области вывода графика
w,h:integer; // ширина и высота области вывода графика
mx,my:real; // масштаб по осям X и Y
х0,у0:integer; // точка – начало координат
begin
// область вывода графика
l: = 10; // X – координата левого верхнего угла
b: = Forml.ClientHeight-20;
//У – координата левого верхнего угла
h: = Forml.ClientHeight-40; // высота
w: = Forml.Width-40; // ширина
x1: = 0; // нижняя граница диапазона аргумента
х2: = 25; // верхняя граница диапазона аргумента
dx: = 0.01; // шаг аргумента
// найдем максимальное и минимальное значения
// функции на отрезке [x1,x2]
y1: = f(xl); // минимум
y2: = f(xl); //максимум
x: = x1;
repeat
У: = f (х);
if у < yl then yl: = y;
if у > у2 then y2: = y;
х: = x+dx; until (x >= х2);
// вычислим масштаб
my: = h/abs(y2-yl); // масштаб по оси Y
mx: = w/abs(x2-xl); // масштаб по оси X
х0: = 1;
у0: = b-Abs(Round(y1*my));
with form1.Canvas do
begin
// оси
MoveTo(l,b);LineTo(l,b-h);
MoveTo(x0,y0);LineTo(x0+w,y0);
TextOut(l+5,b-h,FloatToStrF(y2,ffGeneral,6.3));
TextOut(l+5,b,FloatToStrF(yl,ffGeneral,6.3));
// построение графика
x: = xl; repeat
y: = f(x);
Pixels[x0+Round(x*mx),y0-Round(y*my)]: = clRed;
x: = x+dx;
until (x >= x2);
end;
end;
procedure TForm1.FormPaint(Sender: TObject);
begin
GrOfFunc; end;
// изменился размер окна программы
procedure TForm1.FormResize(Sender: TObject);
begin
// очистить форму
forml.Canvas.FillRect(Rect(0.0,ClientWidth,
ClientHeight));
// построить график
GrOfFunc;
end;
end.
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.