[Delphi] Sinusoida

0

Jk wrysowć sinusoidę?--Delphi 2 , 6 i 5
Ciekawe pomysły i poszukiwanie rozwiązań.

0

procedure TForm1.FormPaint(Sender: TObject);
var
n: Integer;
begin
with Form1.Canvas do
begin
MoveTo(0,200);
for n:=0 to Form1.Width do
begin
LineTo(n,200-Round(Sin(n/20)*50)); //te 50 to amplituda :)
end;
end;
end;
--W poszukiwaniu rozwiązania problemu, najbardziej pomocna jest znajomość odpowiedzi.

0

Najprosciej:
var
x, A:integer;

begin
A:=Image1.Height div 2;
for x:=0 to Image1.Width do
Image1.Canvas.Pixels[x, A+Round(A*sin(x/10))]:=clBlack;
end;

mozna tez zagescic np tak

var
x, A:integer;

begin
A:=Image1.Height div 2;
for x:=0 to Image1.Width10 do
Image1.Canvas.Pixels[Round(x/10), A+Round(A
sin(x/100))]:=clBlack;
end;

[dodane pozniej: zapomnialem o LineTo - pozdrowka Sheitar :))]

--
Pawel {Delphi 6 Personal}

Po pierwsze: naciśnij F1

0

pq napisał:
&gt[dodane pozniej: zapomnialem o LineTo - pozdrowka Sheitar :))]

Gdybym nie zrobil tydzien temu programiku do rysowania sygnalu modulowanego AM to bym nie byl taki szybki :)--W poszukiwaniu rozwiązania problemu, najbardziej pomocna jest znajomość odpowiedzi.

0

Obawiam się, że rysując sposobem pq wyjdzie sinusoida o strasznie niskiej jakości. Też się niedawno tym bawiłem i wyszło mi coś takiego:

a:=10;
b:=20;
c:=0.04;

i:=0;
while i&lt400 do
begin
calosc.Canvas.Pixels[round(i), round(sin(i/a)*b)]:=clblack;
i:=i+c;
end;

Jakby nie działało, to powiedz, bo wyciąłem to z większego kawałka kodu, ale raczej jest ok. Od zmiennych a i b zależy kształt sinusoidy, a od zmiennej c, jej jakość.---------------------------
Delphi 6

Pozdrówka

0

thenkles napisał:
Obawiam się, że rysując sposobem pq wyjdzie sinusoida o strasznie niskiej jakości. Też się niedawno tym bawiłem i wyszło mi coś takiego:

I tak lepsze jest LineTo niz stawianie kropek :P--W poszukiwaniu rozwiązania problemu, najbardziej pomocna jest znajomość odpowiedzi.

0

Dlaczego? Jak dasz LineTo(), to sinusoida będzie strasznie ostra i kanciasta, a moim sposobem wyjdzie ładna i równiutka.---------------------------
Delphi 6

Pozdrówka

0

thenkles napisał:
Dlaczego? Jak dasz LineTo(), to sinusoida będzie strasznie ostra i kanciasta, a moim sposobem wyjdzie ładna i równiutka.

Jeżeli twoim sposobem wyjdzie równa to jego tak samo. Wystarczy punkty przez które przechodzi zagęścić. A i tak najładniejsza jest przy wykorzystaniu krzywych Beziera (tylko niewygodnie jest dopasowywać punkty :( )--Jest jeszcze jeden błąd ... :)

Apel: Piszcie w tematach o jaki język programowania chodzi np. : [Delphi], [C++], itp.

1 użytkowników online, w tym zalogowanych: 0, gości: 1