Einzelnen Beitrag anzeigen

CHackbart

Registriert seit: 22. Okt 2012
260 Beiträge
 
#18

AW: Mini-Flugzeugsimulator

  Alt 25. Mär 2015, 20:06
Mir gefällt die Entwicklung der Diskussion Das erinnert mich an eine Spielerei von vor 15 Jahren (Herrje, wo ist nur die Zeit hin).
Damals hatte ich nach eingehendem Studieren der Webseite von David Braben angefangen einen Elite-Klon zu schreiben.

Der Code für die Flugbewegung war nicht sonderlich komplex, aber tat seinen Dienst:

Delphi-Quellcode:
function moveToTarget(cur, tar, speed: single): single;
begin
  if (cur <> tar) then
  begin
    if (cur < tar) then
    begin
      cur := cur + speed;
      if (cur > tar) then
        cur := tar;
    end
    else
    begin
      cur := cur - speed;
      if (cur < tar) then
        cur := tar;
    end;
  end;
  result := cur;
end;

...

    Rcur.x := moveToTarget(Rcur.x, Rtar.x, Rdampen.x);
    Rcur.y := moveToTarget(Rcur.y, Rtar.y, Rdampen.y);
    Rcur.z := moveToTarget(Rcur.z, Rtar.z, Rdampen.z);

    // z-Achsenrotation für Autopilot
    if (Rcur.z <> 0) then
    begin
      thrust.Assign(0, 0, 1);
      thrust.Mul(Matrix);
      M.RotateAbout(thrust, -Rcur.z);
      Matrix.Mul(M);
    end;

    if (Rcur.x <> 0) then
    begin
      thrust.Assign(1, 0, 0);
      thrust.Mul(Matrix);
      M.RotateAbout(thrust, -Rcur.x);
      Matrix.Mul(M);
    end;

    if (Rcur.y <> 0) then
    begin
      thrust.Assign(0, 1, 0);
      thrust.Mul(Matrix);
      M.RotateAbout(thrust, -Rcur.y);
      Matrix.Mul(M);
    end;

    // Minimalgeschwindigkeit
    if (fSpeedTar < 4) then
      fSpeedTar := 4;
    fSpeedCur := moveToTarget(fSpeedCur, fSpeedTar, 2);
    if (fSpeedCur <> 0) then
    begin
      thrust.Assign(0, 0, fSpeedCur);
      thrust.Mul(Matrix);
      Position.Add(thrust);
      Movement.Copy(thrust);
    end
    else
      Movement.Assign(0, 0, 0);
Bei der Gelegenheit habe ich den Code mal wieder rausgekramt und gleich um FMX und GDI+ erweitert. Schon erstaunlich, wie einfach die alte Delphi2 Version auf Delphi7 bzw. XE5/8 portiert werden konnte.
Miniaturansicht angehängter Grafiken
flupp.jpg  
  Mit Zitat antworten Zitat