Um die Kurve nach rechts zu verschieben, musst du den Verschiebungsbetrag von x abziehen, bevor du die Funktion berechnest. Für eine Verschiebung nach links wird der Verschiebungsbetrag addiert.
In dem folgenden kleinen Programm, bestehend aus Chart, LineSeries, einem Button "Verschiebe um -0,1" und einem Button "Verschiebe um +0.1", speichert die Variable "Gesamtverschiebung" den bisher aufgelaufenen Verschiebungsbetrag. Beim Klicken auf einen der beiden Buttons wird "CalcData" aufgerufen, wo zunächst die Gesamtverschiebung um 0.1 erhöht bzw. erniedrigt wird; dann wird die Funktion, hier ein einfacher Sinus, mit einem um die Gesamtverschiebung erniedrigten x neu berechnet.
Code: Alles auswählen
var
GesamtVerschiebung: Double = 0.0;
procedure TForm1.FormCreate(Sender: TObject);
begin
CalcData(0);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
CalcData(-0.1);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
CalcData(+0.1);
end;
procedure TForm1.CalcData(Verschiebung: Double);
const
MIN = -10;
MAX = 10;
N = 100;
var
i: Integer;
x: Double;
y: Double;
begin
GesamtVerschiebung := GesamtVerschiebung + Verschiebung;
Chart1LineSeries1.Clear;
for i := 0 to N-1 do begin
x := MIN + (MAX-MIN) * i / (N-1);
y := sin(x-GesamtVerschiebung); // hier eigene Funktion einsetzen
Chart1LineSeries1.AddXY(x, y);
end;
end;