
03.12.2011, 22:04
|
 |
.
|
|
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
|
|
Примерно так:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
I, // Переменая счётчика
xc, yc : Integer; // Координаты центра О
y, x, // Координаты x и y
A, B, C : Real; // Коэффициенты квадратного трёхчлена
begin
// Укажем некоторые значения
xc := Img.Width div 2;
yc := Img.Height div 2;
x := - Img.Width;
A := StrToFloat(edit1.Text);
B := StrToFloat(edit2.Text);
C := StrToFloat(edit3.Text);
with Img.Canvas do
begin
// Отрисовка координатных осей.
FillRect(ClientRect);
MoveTo(10, yc);
LineTo(Img.Width - 10, yc);
MoveTo(xc, 10);
LineTo(xc, Img.Height - 10);
Pen.Color := clRed;
I := 10;
repeat
if I <> xc then
begin
MoveTo(I, yc + 3);
LineTo(I, yc - 3);
end;
inc(I, 10);
until I > Img.Width - 10;
I := 10;
repeat
if I <> yc then
begin
MoveTo(xc + 3, I);
LineTo(xc - 3, I);
end;
inc(I, 10);
until I > Img.Height - 10;
// Построение графика.
for I := 1 to 500000 do
begin
x := x + 0.01;
y := A * sqr(x) + B * x + C;
if (y < 200) and (y > -200 ) then
Pixels[Round(x * 10) + xc, yc - Round(y)] := ClBlue;
end;
end;
end;
для правильной установки деления осей и упрощения подсчёта, Img.Width = 560, Img.Height = 380.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
|