Biorytm-Problem

0
procedure TForm1.Button1Click(Sender: TObject);
 var
 x, c:integer;
 n: Integer;
 i:integer;
  A, B : TDateTime;
  Result : Integer;
  dni_fiz, dni_psy, dni_int : integer;
  dni : integer;
  bio_fiz, bio_psy, bio_int : real;
begin
  A := Now;
  B := EncodeDate(1990, 09, 15);
  Result := DaysBetween(A, B);

  label1.caption:=('Dni od urodzenia: ' + IntToStr(Result));

dni_fiz := result mod 21;
dni_psy := result mod 33;
dni_int := result mod 28;

bio_fiz := 100 * Sin(dni_fiz / 21 * 2 * Pi);
bio_psy := 100 * Sin(dni_psy / 33 * 2 * Pi);
bio_int := 100 * Sin(dni_int / 28 * 2 * Pi);
label2.Caption:=floattostr(bio_fiz);
label3.Caption:=floattostr(bio_psy);
label4.Caption:=floattostr(bio_int);


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

end;

procedure TForm1.FormPaint(Sender: TObject);
var
n: Integer;
  A, B : TDateTime;
  Result : Integer;
  dni_fiz, dni_psy, dni_int : integer;
  dni : integer;
  bio_fiz, bio_psy, bio_int : real;
begin







 A := Now;
  B := EncodeDate(1990, 09, 15);
  Result := DaysBetween(A, B);

  label1.caption:=('Dni od urodzenia: ' + IntToStr(Result));

dni_fiz := result mod 21;
dni_psy := result mod 33;
dni_int := result mod 28;

bio_fiz := 100 * Sin(dni_fiz / 21 * 2 * Pi);
bio_psy := 100 * Sin(dni_psy / 33 * 2 * Pi);
bio_int := 100 * Sin(dni_int / 28 * 2 * Pi);
label2.Caption:=floattostr(bio_fiz);
label3.Caption:=floattostr(bio_psy);
label4.Caption:=floattostr(bio_int);






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;

end .

chcialbym zeby w tej fukcji

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

rysowalo biorytm, moze ktos ma pomysl jak to zrobic

pzdr

0

Dopasuj to sobie do Twojego programu

Tf:=23;//okres biorytmu fizycznego
Wf:=2*pi/Tf;//pulsacja
t0:=(data_obliczania_biorytmu-data_urodzenia);//liczba przeżytych dni
tp:=t0-7;//data początku wykresu (w dniach)
tk:=t0+21;//data końca wykresu (w dniach) np 3 tygodnie do przodu
dt:=tk-tp;
xp:=0;
xk:=Image1.Width;
dx:=xk-xp;
w:=dx/dt;
Ay:=Image1.Height div 2;//amplituda
y0:=Image1.Height div 2;//położenie osi y
Image1.Canvas.MoveTo(xp,y0);
Image1.Canvas.LineTo(xk,y0);
for t:=tp to tk-1 do
begin
  x1:=Round(xp+(t-tp)*w);
  x2:=Round(xp+(t-tp+1)*w);
  t1:=t+1;
  y1:=Round(Ay*Sin(t*Wf));
  y2:=Round(Ay*Sin(t1*Wf));
  Image1.Canvas.MoveTo(x1,y0-y1);
  Image1.Canvas.LineTo(x2,y0-y2);
end;

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