Вчера токо писал прогу для суммирования графиков, вот откорректировал чучуть, вроде то что надо:
Код:
var
Bmp: TBitmap;
procedure TForm1.FormActivate(Sender: TObject);
begin
Bmp:= TBitmap.Create;
Bmp.PixelFormat:= pf24bit;
Bmp.Canvas.Brush.Color:= clBlack;
Bmp.Width:= Image1.Width;
Bmp.Height:= Image1.Height;
end;
procedure TForm1.Button1Click(Sender: TObject);
Var
Costanta: Extended;
X,Y: Integer;
i: Extended;
begin
Bmp.Canvas.Rectangle(-1,-1,Image1.Width+1,Image1.Height+1);
Costanta:= StrToFloat(Edit1.Text);
Bmp.Canvas.Pen.Color:= clWhite;
Bmp.Canvas.MoveTo(Image1.Width div 2,0);
Bmp.Canvas.LineTo(Image1.Width div 2,Image1.Height);
Bmp.Canvas.MoveTo(0,Image1.Height div 2);
Bmp.Canvas.LineTo(Image1.Width,Image1.Height div 2);
i:= -1*(Image1.Width div 2);
While i < (Image1.Width div 2) Do
begin
X:= Round(-3*Costanta*i-10*i*i*i);
Y:= Round(1.5*Costanta*i*i-9*i*i*i*i);
i:= i + 0.001;
Bmp.Canvas.Pixels[(Image1.Width div 2)-X,(Image1.Height div 2)-Y]:= clRed;
end;
Image1.Canvas.Draw(0,0, Bmp);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
Bmp.Free;
end;
Если i считать как третью координату то всё усложняеться, помню видел функцию перевода 3D координат в 2D(с перспективой).