Показать сообщение отдельно
  #3  
Старый 12.12.2008, 21:03
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
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;
это отрисовка координатной сетки и отрисовки осей координат.

Вот в принципе и все, сам же парсер можеш найти на этом сайте в исходниках.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием