Einzelnen Beitrag anzeigen

Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#21

AW: Probleme mit Sinus Darstellung

  Alt 27. Feb 2015, 10:28
Eine stehende Welle könnte man in den Code in etwa so implementieren (hab den Code von Blup jetzt aber nicht probiert).

Delphi-Quellcode:
function FX1(const X: double): double;
begin
  Result := 2 * Sin(X + DeltaX);
end;

function FX2(const X: double): double;
begin
  Result := 2 * Sin(DeltaX - X + Pi);
end;

function FX3(const X: double): double;
begin
  Result := FX1(X) + FX2(X);
end;

procedure TFTest.StartDrawButtonClick(Sender: TObject);
begin
  DeltaX := 0;
  DrawTimer.Interval := 50;
  DrawTimer.Enabled := true;
end;

procedure TFTest.StopDrawButtonClick(Sender: TObject);
begin
  DrawTimer.Enabled := false;
end;

procedure TFTest.DrawTimerTimer(Sender: TObject);
begin
  DrawTimer.Enabled := false;
  try
    PaintBox1.Invalidate;
    DeltaX := DeltaX + PI / 18;
    Application.ProcessMessages;
  finally
    DrawTimer.Enabled := true;
  end;
end;


procedure TFTest.PaintBox1Paint(Sender: TObject);
..
    P := BerechnePunkteDarstellung(FX1, R, x0, y0, dx, dy);
    Canvas.Pen.Color := clBlue;
    ZeichnePunkteDarstellung(Canvas, R, P);

    P := BerechnePunkteDarstellung(FX2, R, x0, y0, dx, dy);
    Canvas.Pen.Color := clRed;
    ZeichnePunkteDarstellung(Canvas, R, P);

    P := BerechnePunkteDarstellung(FX3, R, x0, y0, dx, dy);
    Canvas.Pen.Color := clLime;
    ZeichnePunkteDarstellung(Canvas, R, P);
  end;
end;
  Mit Zitat antworten Zitat