rzut ukosny program

0

mam taki program który nie działa jak należy (w TP)

[code]
uses crt, graph;
var
x, d,karta,tryb: integer;
k,v: byte;
y: integer;
h: real;

procedure bum(v,k:byte);
begin
h:=arctan(k);

 for x:= 1 to 600 do
 begin
      y:=round((10/(2 * v * v))*x*x - x* h);   {czy ten wzór jest <ort>wogule </ort>poprawny???}
      if y+350 < 351 then putpixel(x, y+350, 2);
 end;

end;
begin
writeln('podaj v i k');
readln(V);
readln(K);
karta:=detect;
initgraph(karta,tryb,'c:\tp\bgi');;

 bum(v,k);

 readkey;
 closegraph;

end.
[/code]

i teraz ... dlaczego wykres nie zmienia sie po wpisaniu innego kąta?

0

bo arctan potrzebuje argumentu w radianach, a nie w stopniach.

0

thx pomogło...
ale nadal jest błąd po wpisaniu 90 stopni ykres nie wygląda tak jak powinien... w kazdym razie tam mi sie zdaje... gdy wpisze 90 lub coś bliskiego 90 np 89 lunb nawet 85 rzut powinien być pionowy lub prawie pionowy.

uses crt, graph;
var
x, d,karta,tryb: integer;
v: byte;
k1: real;
y: integer;
h: real;

procedure bum(v,k:real);
begin
     k:= k*pi/180;
     h:=arctan(k);

     for x:= 1 to 600 do
     begin
{           y:=round(((x* (sin(k)/cos(k))+(10/2*sqr(V)*sqr(cos(k)))* sqr(x))));}
          y:=round((10/(2 * v * v))*x*x - x* h);
          if y+400 < 401 then putpixel(x, y+400, 2);
     end;
end;
begin
     writeln('podaj v i k1');
     readln(V);
     readln(K1);
     karta:=detect;
     initgraph(karta,tryb,'c:\tp\bgi');;

     bum(v,k1);

     readkey;
     closegraph;
end.

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