График функцииDelphi , Синтаксис , МатематикаГрафик функцииunit grfunc_; 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} // Функция, график которой надо построить function f(x: real): real; begin f := 2 * Sin(x) * exp(x / 5); end; // строит график функции procedure GrOfFunc; var x1, x2: real; // границы изменения аргумента функции y1, y2: real; // границы изменения значения функции x: real; // аргумент функции y: real; // значение функции в точке x dx: real; // приращение аргумента l, b: integer; // левый нижний угол области вывода графика w, h: integer; // ширина и высота области вывода графика mx, my: real; // масштаб по осям X и Y x0, y0: integer; // точка - начало координат begin // область вывода графика l := 10; // X - координата левого верхнего угла b := Form1.ClientHeight - 20; // Y - координата левого верхнего угла h := Form1.ClientHeight - 40; // высота w := Form1.Width - 40; // ширина x1 := 0; // нижняя граница диапазона аргумента x2 := 25; // верхняя граница диапазона аргумента dx := 0.01; // шаг аргумента // найдем максимальное и минимальное значения // функции на отрезке [x1,x2] y1 := f(x1); // минимум y2 := f(x1); // максимум 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); // масштаб по оси Y mx := w / abs(x2 - x1); // масштаб по оси X // оси x0 := l; y0 := 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(y1, ffGeneral, 6, 3)); // построение графика x := x1; repeat y := f(x); Pixels[x0 + Round(x * mx), y0 - Round(y * my)] := clRed; x := x + dx; until (x >= x2); TextOut(17, 100, 'Delphi World Example'); end; end; procedure TForm1.FormPaint(Sender: TObject); begin GrOfFunc; end; // изменился размер окна программы procedure TForm1.FormResize(Sender: TObject); begin // очистить форму form1.Canvas.FillRect(Rect(0, 0, ClientWidth, ClientHeight)); // построить график GrOfFunc; end; end.Скачать весь проект Перевод контента на русский язык: Это проект программирования Delphi, который aims to plot the graph of a given function Вот разбивка кода:
Некоторые предложения по улучшению:
В целом, это хороший старт для создания простого приложения для рисования графиков в Delphi. С некоторыми улучшениями оно может стать еще более мощным и пользовательским! В статье описывается пример программы на языке Delphi, которая строит график функции y = 2 * Sin(x) * exp(x / 5). Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Математика ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |