Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Schräger Wurf in Delphi 6

  Alt 11. Nov 2004, 14:16
Warum ist denn da die CLX Ubnit QGraphics drinne?

Delphi-Quellcode:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, Math{, QGraphics};
Dann geht's.

"Abwurfgeschwindigkeit in N".
Ich kenne km/h oder m/sec, aber die Einheit N für die Geschwindigkeit ist mir gänzlich unbekannt.

Noch was: Lasse ich einen Wurf berechnen und verdecke das Programmfenster ist die Linie weg.

Zitat:
Auch die Maßstäbe des Koordinatensystems soll man verändern. Dabei kann man aussuchen ob man nur die Y– oder X- Achse verändert.
Das vermisse ich in deinem Programm irgendwie.

Und irgendwie vermisse ich so etwas die strukturierte Programmierung. Wenn ich so was sehe:
Delphi-Quellcode:
procedure TForm1.btn_berechnenClick(Sender: TObject);
var
  i : integer;
begin
  einlesen; //Sprung zu der Prozedur, die die Werte einliest
  extreme; //Sprung zu der Prozedur, die die extreme des Wurfes errechnet

  //-----Berechnung der X und Y Werte
  for i := 1 to 441 do
  begin
    punkte[i, 0] := i; //Werte für x werden gesetzt
    punkte[i, 1] := Round(((i * massx) * Tan(alpha) - ((SB * gewicht) / (2 *
      sqr(gesch) * sqr(Cos(alpha)))) * sqr(i * massx)) / massy * -1);
      //Berechnung der Punkte im Bezug zur Y- Achse

      //-----Zeichnet die Parabel als Punkte ein
    if (cb_auswahl.ItemIndex = 0) then
    begin
      with Form1.PaintBox1 do
      begin
        Canvas.Pixels[i + 30, punkte[i, 1] + 140 - hoehe] := clBlack;
          //Zeichnen der Parabel in Punkten
      end;
    end;
  end;

  //-----Zeichnet die Parabel als Linie ein
  if ((cb_auswahl.ItemIndex = 1) or (cb_auswahl.Text = 'Parabel als Linie')) then
  begin
    with Form1.PaintBox1 do
    begin
      for i := 1 to 441 do
      begin
        Canvas.MoveTo(30, 140 - hoehe);
        if (i = 1) then
        begin
          Canvas.LineTo(i + 31, punkte[i + 1, 1] + 140 - hoehe);
        end
        else if (i < 441) then
        begin
          Canvas.MoveTo(punkte[i, 0] + 30, punkte[i, 1] + 140 - hoehe);
            //Zeichnen der Parabel als Linie
          Canvas.LineTo(i + 31, punkte[i + 1, 1] + 140 - hoehe);
        end;
      end;
    end;
  end;
end;
So was kapselt man sauber in Klassen. Eine Klasse für den Wurf, in der die Werte berechnet werden und eine Klasse zum Zeichnen des Koordinatensystems und der Flugbahn.

Delphi-Quellcode:
procedure TForm1.btn_beendenClick(Sender: TObject);
begin
  Application.Terminate(); //Beenden des Programms
end;
Ich weiß nicht, ob es immer so sinnvoll ist immer gegen eine Mauer zu fahren, wenn man mit dem Auto anhalten will. Ein einfaches Close tut es voll und ganz.

Bringt die Tabulatur Reihenfolge mal in die richtige Reihenfolge.

Abwurfhöhe 500 Meter und ich sehe nichts. Entweder diese Werte gar nicht zu lassen oder entsprechend skalieren.

Das Maximieren des Fensters kommt auch nicht so gut.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat