Morjen,
so ich habe mal versucht es umzusetzen
folgendes ist bei rausgekommen:
Delphi-Quellcode:
function TProjectile.Trajectory: TTrajectory;
var
T:Extended;
begin
Result.Steps:=0;
if Position.Y > FGround then Exit;
T:=0.1;
repeat
Inc(Result.Steps);
SetLength(Result.Course,Result.Steps);
Result.Course[Result.Steps-1].X:=Trunc((FPower * Cos(FAngle / 180 * Pi ) * T) +
(FWind * T)) + FPosition.X;
Result.Course[Result.Steps-1].Y:=Trunc(-(FPower * Sin(FAngle / 180 * Pi ) * T -
(FWeight / 10) * FGravity * T * T) + FPosition.Y);
if FRange > 0 then
if Result.Course[Result.Steps-1].X >= Result.Course[Result.Steps-1].X + FRange then
begin
Inc(Result.Steps);
SetLength(Result.Course,Result.Steps);
Result.Course[Result.Steps-1].X:=Result.Course[Result.Steps-2].X;
Result.Course[Result.Steps-1].Y:=FGround;
Break;
end;
T:=T+0.1;
until Result.Course[Result.Steps-1].Y >= FGround;
end;
Ich weiß nicht ob das logisch so ganz korrekt ist, jedenfalls tut es was wenn man die Werte verändert?
Ich habe mal meine Testanwendung mit angehängt.
Daniel M.
"The WM_NULL message performs no operation. An application sends the WM_NULL message if it wants to post a message that the recipient window will ignore."