
12.12.2008, 21:03
|
 |
Sir Richard Abramson
|
|
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
|
|
Для начала тебе нужно реализовать парсер для вычисления твоей формулы, далее тебе необходимо построить декартову систему координат.
Код:
procedure LineToXY(x,y:single;_color:TColor);
var Temp:TColor;
begin
Temp:=Form1.imgGraph.Canvas.Pen.Color;
Form1.imgGraph.Canvas.Pen.Color:=_color;
Form1.imgGraph.Canvas.LineTo(Trunc(ImageCenter.X+(x*Zoom)),Trunc(ImageCenter.y-(y*Zoom)));
Form1.imgGraph.Canvas.Pen.Color:=Temp;
end;
procedure MoveToXY(x,y:single);
begin
Form1.imgGraph.Canvas.MoveTo(Trunc(ImageCenter.X+(x*Zoom)),Trunc(ImageCenter.Y-(y*Zoom)));
end;
это для построения вектора в двухмерном пространстве.
Код:
if Form1.cbDrawGrid.Checked Then
begin
For X:=-10 to 10 Do
begin
MoveToXY(X,-10);
LineToXY(x,10,clSilver);
end;
For Y:=-10 to 10 Do
begin
MoveToXY(-10,Y);
LineToXY(10,Y,clSilver);
end;
end;
MoveToXY(-10,0);
LineToXY(10,0,clRed);
MoveToXY(0,-10);
LineToXY(0,10,clLime);
DrawPointer(10,0,True,clRed);
DrawPointer(0,10,False,clLime);
for X := -10 to 10 do
Begin
MoveToXY(X,-0.05);
LineToXY(X,0.05,clRed);
TextToXY(X,-0.1,IntToStr(X));
End;
for Y := -10 to 10 do
Begin
If Y=0 Then
Continue;
MoveToXY(-0.05,Y);
LineToXY(0.05,Y,clLime);
TextToXY(0.1,Y,IntToStr(Y));
End;
это отрисовка координатной сетки и отрисовки осей координат.
Вот в принципе и все, сам же парсер можеш найти на этом сайте в исходниках.
|