Wątek zablokowany 2017-05-10 18:04 przez furious programming.

Rzut ukośny

0

Witam,
napisalem sobie programik ktory sumuluje rzut ukosny nie jest jakis super extra ale musi taki byc :) , oto ort! zrodelko do pomocy ;-)

  G = 9.81;
  Vo,h,z,czas: integer;
  alfa: Real;

  Vo := StrToInt(Edit1.Text); //predkosc poczatkowa
  alfa := StrToFloat(Edit2.Text); //kat nachylenia
  Alfa:= alfa*PI/180;
 

  Z:= Trunc((2*sqr(Vo)*sin(alfa)*cos(alfa))/G); //Zasięg rzutu
  Label8.Caption := 'Zasięg rzutu:'+ IntToStr(Z)+'m';
  H:=Trunc((sqr(Vo)*sqr(sin(alfa)))/G);  ///Max osiagnieta wysokosc
  Label9.Caption := 'Maxymalna wysokość:'+ IntToStr(H)+'m';

  procedure TForm1.Rzut;
  var x,y: integer;
  begin
  x:=0; y:=0;
  Repeat
   Wykres.Canvas.MoveTo(x,Wykres.Height-1+y);
   x:=x+1; // x stale hmm...
   y:=Round(x*tg(alfa)+(G/(2*sqr(Vo)*sqr(Cos(alfa))))*sqr(x)); //polozenie Y
   Sleep(25);
   Application.ProcessMessages;
   Wykres.Canvas.LineTo(x,Wykres.Height+y);
  Until (y>0)or (x >= wykres.width)or Stop = True;
  end;
<font color="blue"> 1. musze zrobic skalowanie (pomniejszyc wykres dla zbyt duzych wartosci) ale cos mi nie idzie .... 2. wykres za szybko spada przy duzym kacie np 89st. i 200km/h :-/ </span> Czy moglby mi ktos doradzic co tu zmienic aby to zaczelo dzialac - odnosnie pkt. 1,2 ;-(
0

Moze dodam jeszcze ze przy skalowaniu staralem sie podzielic
np.

skala:=zakres_rzutu/wykres.width;

i wedlug tego dzielilem x i y ale cos zlego sie dzialo :-|
<font color="red">Kurde czy nikt mi nie pomoze</span> ;-|

0

Moze dodam jeszcze ze przy skalowaniu staralem sie podzielic
np.

skala:=zakres_rzutu/wykres.width;

Wystarczy ze dorzucisz:
begin
x:=0;licznik:=0; y:=0;
Repeat
Wykres.Canvas.MoveTo(Round(x),Wykres.Height-1+Round(y));
licznik:=licznik+1;
x:= (licznik/Skala);
y:=((liczniktg(alfa)+(masa/(2sqr(Vo)*sqr(Cos(alfa))))*sqr(licznik))/Skala);

cos mi przeskalowalo <lol2>

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