Funkcja liniowa

0

Pisze gierke i zatrzymalem sie na takim problemie:

Rysunek:
http://www.darek963.republika.pl/strzal.jpg

Potrzebuje takiego f(x), ze punkt Pocisk bedzie lezec na prostej przechodzacej przez punkt Gracz. Prosta musi lezec pod (danym) katem alfa.

Z gory THX {hello}

0

var
x,y, i : integer;
begin
tutaj pętla, która porusza z jednego miejsca na drugie
application.processmessages;
for i:=0 to promien do
begin
x := round(i
sin(kąt)+gracz.x);w tym gracz.x i y to jest wektorgydby nie dzialalo to pech :P
y := round(i
cos(kąt)+gracz.y);
gracz.x := x;
gracz.y := y;
end;
end;

łatwo to przepisac do dxtimer lub normalnego ttimer

0

darek963, jeżeli można wiedzieć, to w jakiej klasie jesteś? To podstawy matematyki
Prosta przechodząca przez punkt (gracz.x, gracz.y) pod kątem alfa (do dodatniej półosi ukł. współrzędnych) ma wzór:
y = (x - gracz.x)*tg(alfa) + gracz.y

Punkt Pocisk musi leżeć na tej prostej (w odległości promień od gracz, ale na to podał już wzór ZIOMBER).

A tak przy okazji, jakbyś rysował tor lotu pocisku, to nie jest on prostą tylko krzywą balistyczną (w najbardziej szczegółowym przypadku można ją podciątnąć pod parabolę)--Jest jeszcze jeden błąd ... :)

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

0

darek963, jeżeli można wiedzieć, to w jakiej klasie jesteś? To podstawy matematyki

Bez kometarza.

Prosta przechodząca przez punkt (gracz.x, gracz.y) pod kątem alfa (do dodatniej półosi ukł. współrzędnych) ma wzór:
y = (x - gracz.x)*tg(alfa) + gracz.y

Ok, tylko, ze:

Pocisk.Kat:=Pocisk.Kierunek*(256/360)*0.017456;
(zamiana miary kata RotateDraw na radiany 1° = 0,017453 rad)

Pocisk.RealY:=(Tan(Pocisk.Kat)*Pocisk.X)+Gracz.Y-(Tan(Pocisk.Kat)*Gracz.X);

I co?
Du.. ,leci w zupelnie inna strone co trzeba. :P
poradzilem sobie metoda prob i bledow:

Pocisk.Kat:=Pocisk.Kierunek*(256/360)*0.034;

ale dlaczego cos w okolicach 0.034 zamiast 0,017453?
Wie ktos moze??

A tak przy okazji, jakbyś rysował tor lotu pocisku, to nie jest on prostą tylko krzywą balistyczną (w najbardziej szczegółowym przypadku można ją podciątnąć pod parabolę)

Parabole? :D
Wyglada beznadziejnie!
Pocisk.RealGrawitacja:=Pocisk.RealGrawitacja*Pocisk.WspolczynnikGrawitacji;
Pocisk.RealY:=Pocisk.RealY+Pocisk.RealGrawitacja;
Gdzie:
Pocisk.WspolczynnikGrawitacji:=(120+(Pocisk.Kierunek/3))/100;

To jest duzo lepsze {zzz}
(Kula wystrzelona z katapulty)

Pozdrawiam {hello}

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