
22.09.2010, 05:03
|
Модератор
|
|
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
|
|
Как-то примерно так:
Код:
uses Math;
procedure TForm1.Button1Click(Sender: TObject);
var
A, B : Array Of Extended;
I : Integer;
J : Extended;
mX, mY, xX, xY, dX, dY : Extended;
kX, kY : Extended;
begin
SetLength(A,0);
SetLength(B,0);
J := -5;
While J < 5 Do
begin
SetLength(A,Length(A)+1);
A[High(A)] := J;
SetLength(B,Length(B)+1);
B[High(B)] := J*J;
J := J + 0.1;
end;
// Проверяем длинну массивов.
If (Length(A) <> Length(B)) Or (Low(A) <> Low(B)) Then
Raise Exception.create('Массивы не равны.');
// Рассчитываем коэф. для отрисовки.
mX := 0; mY := 0; xX := 0; xY := 0;
For I := Low(A) To High(A) Do
Begin
mX := Min(mX,A[i]);
mY := Min(mY,B[i]);
xX := Max(xX,A[i]);
xY := Max(xY,B[i]);
End;
dX := Abs(xX - mX) + 1;
dY := Abs(xY - mY) + 1;
kX := Image1.Width / (2*dX) ;
kY := Image1.Height / (2*dY) ;
// Выравниваем коэф по мин.
kX := Min(kX,kY);
kY := Min(kX,kY);
dX := (Image1.Width / 2);
dY := (Image1.Height / 2);
// Теперь рисуем
With Image1.Canvas Do
Begin
Pen.Color := clBlack;
MoveTo(Round(kX*A[Low(A)] + dX), Round(dY - kY*B[Low(B)]));
For I := Low(A) + 1 To High(A) Do
LineTo(Round(kX*A[i] + dX), Round(dY - kY*B[i]));
End;
end;
|