FAQ » Grafika

Jak narysować sinusoidę

Jeżeli chcemy narysować wykres jednego okresu funkcji sinus to możemy skorzystać z kilku możliwości

const
  A = 100; {Amplituda}
  L = 150; {Dlugosc}
  G = 1.0; {Gęstość. Im większa liczba tym mniejsza gęstość}
var
  i: Integer;
begin
  {Jeżeli nie zależy nam na dokładności i szybkości, to możemy rysować punkt po punkcie}
  for i := 0 to L do
    Canvas.Pixels[i, 100+Trunc(A*sin(2*G*i/L*Pi))] := clRed;

  {Jeżeli chcemy mieć dosyć dokładną ciągła sinusoidę to możemy użyć PolyBezier}
  Canvas.PolyBezier([Point(0,100), Point(L*7 div 15,Trunc(100+3.4*A)), Point(L*8 div 15,Trunc(100-3.4*A)), Point(L,100)]);

  {Największe jednak możliwości daje nam LineTo. Możemy dostosować gęstość, czyli liczbę punktów pośrednich, a co za tym idzie szybkość i dokładność krzywej}
  Canvas.MoveTo(0, 100);
  for i := 0 to L do
    Canvas.LineTo(i, 100+Trunc(A*sin(2*G*i/L*Pi)));
end;

1 komentarz

tubug 2005-01-05 19:48

witam.. czy jest jakis sposob na narysowanie bardzo zlozonych funkcjii ??