![]() |
Schräger Wurf in Delphi 6
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo liebe Delphiler,
ich habe mit meinem Teamkollegen für die Schule ein Programm in Delphi geschrieben das einen Schrägen Wurf berechnet und in ein Koordinatensystem einzeichnet. Anbei ist eine Dokumentation mit allen erklärungen und der Quelltext mit Kommentaren, sowie allen erläuterungen. Ich dachte mir das es ein schönes Beispiel sei, was man zum Thema Grafiken in Delphi hier hereinstellen könnte. Ich habe von den Benutzern hier auch einige Tips bekommen, und wollte mal das Resultat als danke hier hereinstellen. :dp: Ich hoffe das man hier auch einfach etwas hochladen darf. Sollte das nicht der Fall sein, bitte ich darum, den Thread einfach zu löschen. Vielen Dank nochmal an alle DP´ler und ich grüße GariZZo, nailor, Schwabix, Wheelie, alcaeus, dizzy und last but not least,... den Rest! :zwinker: cu GaKo |
Re: Schräger Wurf in Delphi 6
Hallo und herzlich willkommen in der DP ;)
Klar, darfst du hier was hochladen, dafür ist ja diese Funktion da ;). Doch ist das meiner Meinung nach der falsche Ort. Die Sparte OpenSource ist da doch eigentlich geeigneter, meinst du nicht? :zwinker: |
DP-Maintenance
Dieses Thema wurde von "sakura" von "Multimedia" nach "Open-Source" verschoben.
|
Re: Schräger Wurf in Delphi 6
Hi,
Gruß Stephan :dance: |
Re: Schräger Wurf in Delphi 6
Da ich alle Anregungen nicht sofort inbauen kann sage ich erstmal danke für die Anregung und behebe die Fehler im nu...
Eine Sache noch... wie binde ich *.dd Dateien beim Compilieren mit in das Programm ein? ich habe mir Schon gedacht das diese Fehler auftreten und hier nach einer Lösung gesucht, bin allerdings nicht fündig geworden. :wiejetzt: Bei Antwort wird auch dieser Fehler behoben. cu in 5 min |
Re: Schräger Wurf in Delphi 6
Warum ist denn da die CLX Ubnit QGraphics drinne?
Delphi-Quellcode:
Dann geht's.
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Math{, QGraphics}; "Abwurfgeschwindigkeit in N". :gruebel: 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. :shock: Zitat:
Und irgendwie vermisse ich so etwas die strukturierte Programmierung. Wenn ich so was sehe:
Delphi-Quellcode:
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.
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;
Delphi-Quellcode:
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.
procedure TForm1.btn_beendenClick(Sender: TObject);
begin Application.Terminate(); //Beenden des Programms end; 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. ;) |
Re: Schräger Wurf in Delphi 6
Liste der Anhänge anzeigen (Anzahl: 1)
Also die Verbesserungen sind glaube ich nun alle aus dem Weg geräumt.
Ich habe die Struktogramme als *.jpg Dateien in den Bilderordner gepackt und in den Ordner für Struktogramme das Proggie mit dem man diese zeichnen kann. Ich habe das Project neu Compiliert nachdem ich die QGraphics rausgenaommen habe. N heist Newton und ist eine Geschwindigkeit nur in sofern, und da gebe ich dir recht, als das N sich aus kg * m/s (kilogramm mal meter pro sekunde) zusammensetzt. Hoffe Ihr findet nichtmehr allzuviele Fehler...=) cu GaKo P.S.: Das mit dem Parabel nach minimieren weg, habe ich auch gemerkt, mir aber nicht zu helfen gewusst, wollen nur hoffen das der Lehrer nicht merkt. :mrgreen: |
Re: Schräger Wurf in Delphi 6
Dazu müsste im OnPaint gezeichnet werden. Oder ihr malt in einer PictureBox. Die kann sich alleine merken, wie sie aussieht.
|
Re: Schräger Wurf in Delphi 6
Ja Michi,
du hast ja recht. :cry: Mein Problem: Ich weiß nicht wie und mein Lehrer ist nicht bereit uns sowas gefügig zu machen. Meine Lösung: Bitte erkläre es mir...hab irgendwie kein Hanbuch zur Hand =) :stupid: :zwinker: :stupid: Der Maßstab kann in die Vorgesehenen Felder eingegeben werden und wenn du Ihn vergrößerst, dann wird dir der abwurfpunkt auch Angezeigt. Den Quelltext hätte man wirklich besser kommentieren können, auch da bist du im Recht!!!! Und bevor ich es vergesse, bei mir sieht der Quelltext in Delphi sehr schön geordnet aus, immer mit zwei Tabs von Schachtel zu Schachtel. *verdammtschrei* Das Ding ist echt nicht so gut was? Ja nun, was solls, abgegeben ist das schon... beim nächsten mal weiß ich es besser...!!! cu GaKo P.S.: Der Maßstab wird mit in die berechnung der Punkte für Y einbezogen, weil ja X sozusagen eine Konstante darstellt. |
Re: Schräger Wurf in Delphi 6
Zitat:
|
Re: Schräger Wurf in Delphi 6
Also schreibe ich da besser Abwurfkraft?
Das trifft den Nagel doch eher auf den Kopp oder? :pale: WIR KRIEGEN NE 6! *g* cu GaKo |
Re: Schräger Wurf in Delphi 6
Ja, N ist die Einheit für Kraft.
Du könntest noch einbauen, dass man mit der Maus in die Paintbox oder was ds ist klicken kann und mit gedrückter Maustaste einen Richtungsvektor ziehen kann. Daraus wird dann die Zeichnung berechnet^^ :stupid: |
Re: Schräger Wurf in Delphi 6
Zitat:
|
Re: Schräger Wurf in Delphi 6
Masse x Geschwindigkeit = Impuls
|
Re: Schräger Wurf in Delphi 6
Liste der Anhänge anzeigen (Anzahl: 1)
So, ich habe es mal eben so schnell programmiert, wie ich es mir vorgestellt hätte, dass man so was realisiert. Das Projekt befindet sich im Anhang.
|
Re: Schräger Wurf in Delphi 6
sorry man,
so derbe is dein Proggy NICHT.... cu on LAN |
Re: Schräger Wurf in Delphi 6
Äh. Das ist nur eine Demo, wie man es mit Klassen lösen köönte und kein fertiges Programm.
|
Re: Schräger Wurf in Delphi 6
Ja danke dir,
Ich habe gerade einen kleinen Abraster bekommen... hat nix mit dir zu tuhen gehabt... My fault! Kannst du mir vielleicht nochmal ein paar Sätze zu der construcor function schreiben??? ich habe schon gecheckt was das dort bewirkt, nur nicht wie man darauf kommt die Eigenschaften dieser Klasse zu benutzen und wie man diese Eigenschaften nun verwenden kann usw. War echt nett von dir mir das nochmal zu schicken damit ich das kapiere...! BIG THX ^^ Hab halt nur den Unterricht von sonem (inkompetetnten spasten) Lehrer genossen! Danke nochmal und ein AUSDRÜCKLICHES SORRY!!!! cu GaKo |
Re: Schräger Wurf in Delphi 6
Nachher. Gerne.
|
Re: Schräger Wurf in Delphi 6
Liste der Anhänge anzeigen (Anzahl: 1)
So, das ganze noch mal etwas umhgebaut und mit Kommentaren.
|
Re: Schräger Wurf in Delphi 6
Nice du,
danke dir vielmals für die Erläuterung!!! Ich werde wohl heute keine Zeit mehr haben das alles zu studieren und einzubauen, und dieses WE siehts echt nicht gut aus... aber: vielleicht schaffe ich das in der nächsten Zeit trotzdem und dann Poste ich das hier nochmal als bessere Version rein !!! Vielen dank nochmal an alle und ganz besonders an Lucky!!!! cu GaKo P.S.: @ Lucky, tut mir wirklich leid das Kommentar von eben! Nimms mir bitte nicht allzu übel! |
Re: Schräger Wurf in Delphi 6
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe mal das Programm fertig geschrieben. So würde ich es mir vorstellen. Mit den Scrollbars soll man später noch mal das ganze skalieren können.
Programm und Sourcen im Anhang. |
Re: Schräger Wurf in Delphi 6
Hi 2kstealth,
warum, lässt du keine negative Schwerkraft zu? Wäre ganz lustig. Rainer |
Re: Schräger Wurf in Delphi 6
Hi Luckie,
du hast gemeckert wegen der Grenzen, die man verriegeln müsste. Gib mal als Anfangsgeschwindigkeit 980 ein, dann hängt sich dein Prog auf. Rainer |
Re: Schräger Wurf in Delphi 6
Nein es hängt sich nicht auf, es rechnet nur so lange.
|
Re: Schräger Wurf in Delphi 6
Liste der Anhänge anzeigen (Anzahl: 3)
Ich darf mich noch mal zu Wort melden. ;) Jetzt kann man es auch mit den Scrollbars skalieren (siehe Screenshots). Desweiteren habe ich etwas in den beiden Klassen aufgeräumt. Jetzt hängt er auch nicht mehr bei einer Anfangsgeschwindigkeit von 980m/s. ;)
Du kannst den Code gerne verwenden, bitte bewahre nur das Copyright, wie es in der Linzenz drinne steht, die bei den Sourcen bei liegt. |
Re: Schräger Wurf in Delphi 6
Liste der Anhänge anzeigen (Anzahl: 1)
Noch ein kleines Update. Man kann das Fenster nun in der Größe verändern.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:14 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz