Недавно добавленные исходники

•  TDictionary Custom Sort  3 225

•  Fast Watermark Sources  2 991

•  3D Designer  4 750

•  Sik Screen Capture  3 259

•  Patch Maker  3 467

•  Айболит (remote control)  3 528

•  ListBox Drag & Drop  2 904

•  Доска для игры Реверси  80 778

•  Графические эффекты  3 843

•  Рисование по маске  3 171

•  Перетаскивание изображений  2 544

•  Canvas Drawing  2 672

•  Рисование Луны  2 500

•  Поворот изображения  2 092

•  Рисование стержней  2 120

•  Paint on Shape  1 525

•  Генератор кроссвордов  2 183

•  Головоломка Paletto  1 730

•  Теорема Монжа об окружностях  2 158

•  Пазл Numbrix  1 649

•  Заборы и коммивояжеры  2 016

•  Игра HIP  1 262

•  Игра Go (Го)  1 200

•  Симулятор лифта  1 422

•  Программа укладки плитки  1 177

•  Генератор лабиринта  1 512

•  Проверка числового ввода  1 297

•  HEX View  1 466

•  Физический маятник  1 322

•  Задача коммивояжера  1 357

 
скрыть


Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

График функции




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.
Скачать весь проект




Похожие по теме исходники

MGraph (построение графиков)

Grapher - Черчение графиков

График работы

Линейная интерполяция функции

 



Copyright © 2004-2024 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте