Jk wrysowć sinusoidę?--Delphi 2 , 6 i 5
Ciekawe pomysły i poszukiwanie rozwiązań.
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.
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(Asin(x/100))]:=clBlack;
end;
[dodane pozniej: zapomnialem o LineTo - pozdrowka Sheitar :))]
--
Pawel {Delphi 6 Personal}
Po pierwsze: naciśnij F1
pq napisał:
>[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.
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<400 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
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.
Dlaczego? Jak dasz LineTo(), to sinusoida będzie strasznie ostra i kanciasta, a moim sposobem wyjdzie ładna i równiutka.---------------------------
Delphi 6
Pozdrówka
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.
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.