Guten Tag.
Ich möchte hier mein kleines Physik Simulationsprogramm vorstellen.
Dieses Programm ist zwar nichts Besonderes, aber als Zeitvertreib kann es eigentlich ganz nett sein.
Und vielleicht kann kann jemand aus dem SourcCode einen Nutzen ziehen.
Das Programm zeigt einen Ball, der inerhalb eines Rahmens umherhüpft.
Dabei wird die Position des Balles mit den einfachsten physikalischen Regeln errechnet.
Geschwindigkeit + Beschläunigung -> Neue Geschwindigkeit
Position + Geschwindigkeit -> Neue Position
Seit Version 2 ist es möglich mehrere Bälle gleichzeitig darzustellen.
In Version 2.0.1, welche die Beta Version von Version 2 ist kollidieren Bälle allerdings noch nicht untereinander.
Ab Version 2.1 wird das aber behoben sein.
Name:
Physik Test.exe
Systemanforderungen:
Verwendete Sprache:
Visual Basic .Net (IDE Visual Basic 2010)
Variablen:
Funktionen:
Screenshots:
Sind im Anhang
Dateien und Registrierungseinträge, die erstellt werden:
Keine.
Zumindest nicht vom Programm selbst.
Es kann aber durchaus sein, dass Windows sich da selbst was zurechtbastelt.
Bekannte Bugs:
Version 1:
Version 1.2 (bugfix):
Version 2.0.1:
Fragen, Anregungen, Wünsche:
Ich beantworte gerne Fragen, wo ich kann. Auch Fragen in der Art "Wie hast Du das und das gelöst?", obwohl das unnötig ist, weil der SourceCode sowoso zugänglich ist.
Auch Tipps, wie man Dinge verbessern kann sind erwünscht (z.B. die Ziehfunktion) und falls jemand noch eine Idee hat, die man einbauen könnte nehme ich auch diese sehr gerne an.
Lizenz:
Open Source
Das heißt die Software darf beliebig weiterverbreitet, verändert, etc. werden. Dekompilieren bringt nichts, weil der SourceCode sowiso zugänglich ist.
Download:
Physik Test Exe.zip - gepackt: ca. 16KB, entpackt: ca. 40KB
Physik Test Projekt.zip - gepackt: ca. 168KB, entpackt: ca. 676KB
Physik Test Exe v1.2.zip - gepackt: ca. 16KB, entpackt: ca. 40KB
Physik Test Projekt v1.2.zip - gepackt: ca. 156KB, entpackt: ca. 644KB
Physik Test Exe v1.2.zip - gepackt: ca. 16KB, entpackt: ca. 44KB
Physik Test Projekt v1.2.zip - gepackt: ca. 184KB, entpackt: ca. 724KB
(Im Anhang)
Zur aktuellen Version:
Die Version 2.0.1 ist nur eine Betaversion.
Ich wollte die Meinung der Benutzer hören und wissen, was ich ändern/verbessern/hinzufügen/entfernen könnte, bevor ich die entgültige Version 2 veröffentliche.
Die Kollisionserkennung zwischen den Bällen funktioniert noch nicht, wird aber ab Version 2.1 behoben sein (Das ist ein dicker Brocken an Mathematik!).
Wenn jemand dazu einen guten Artikel kennt bin ich sehr dankbar.
Da das Hinzufügen und Entfernen von Bällen etwas unübersichtlich gestaltet ist, hier ein Tutorial:
Das Programm startet standardmäßig mit einem grünen Ball. In einer ListBox ist dieser Ball ausgewählt ("Ball0 [0, 128, 0]"). Die Zahlen in den eckigen Klammern gibt die Farbe in RGB Format an (damit man einen gesuchten Ball ein bisschen einfacher findet). In den TextBoxen rechts befinden sich die individuellen Werte des Balles. Solange der Ball ausgewählt ist können diese Werte verändert werden. Auch die Ballfarbe kann verändert werden. Der ausgewählte Ball kann durch Klicken auf "-" unter der ListBox entfernt werden.
In der ListBox befindet sich immer ganz unten der Eintrag "<Neuer Ball>". Wenn dieser Eintrag ausgewählt ist werden in den TextBoxen die Standardwerte angezeigt. Diese Werte können nach Belieben verändert werden. Durch Klicken auf "+" wird ein neuer Ball ins Spielfeld eingefügt und die Auswahl in der ListBox springt zum neuen Eintrag.
Der ausgewählte Ball wird durch zwei Linien markiert, die sich beim Mittelpunkt des Balles treffen.
Ich möchte hier mein kleines Physik Simulationsprogramm vorstellen.
Dieses Programm ist zwar nichts Besonderes, aber als Zeitvertreib kann es eigentlich ganz nett sein.
Und vielleicht kann kann jemand aus dem SourcCode einen Nutzen ziehen.
Das Programm zeigt einen Ball, der inerhalb eines Rahmens umherhüpft.
Dabei wird die Position des Balles mit den einfachsten physikalischen Regeln errechnet.
Geschwindigkeit + Beschläunigung -> Neue Geschwindigkeit
Position + Geschwindigkeit -> Neue Position
Seit Version 2 ist es möglich mehrere Bälle gleichzeitig darzustellen.
In Version 2.0.1, welche die Beta Version von Version 2 ist kollidieren Bälle allerdings noch nicht untereinander.
Ab Version 2.1 wird das aber behoben sein.
Name:
Physik Test.exe
Systemanforderungen:
- .Net Framework 2.0 oder höher
- Minimale Bildschirmauflösung 630x250 (sehr eng). Empfohlen 640x480 und größer.
- Ab Version 2 Minimale Bildschirmauflösung 730x270. Empfohlen 730x480 und größer.
- Arbeitsspeicher siehe bekannte Bugs
- Tastatur und Maus
Verwendete Sprache:
Visual Basic .Net (IDE Visual Basic 2010)
Variablen:
- Radius: Gibt den Radius des Balles an (Logik^^). Einheit Pixel.
- Position X, Y: Gibt die Position des Mittelpunktes des Balles relativ zum ClientRectangle der Form an. Einheit Pixel.
- Geschwindigkeit X, Y: Gibt die Geschwindigkeit des Balles an. Einheit Pixel/Schritt
- Intervall: Gibt den Intervall an, in dem die Position neu berechnet wird. Einheit Millisekunden (Ja, es ist ein Timer).
- Gravitation: Gibt die Beschläunigung in Y Richtung an, der der Ball ausgesetzt ist. Vergleichbar mit der Erdgravitation. Einheit Pixel/Schritt /Schritt, also Pixel/Schritt².
- Höhe/Breite: Gibt die Höhe/Breite des Feldes an. Einheit Pixel
- Stoßelastizität: Gibt an, mit wie viel Prozent der Aufprallgeschwindigkeit der Ball beim Aufprall auf dem Boden, einer der Wände oder der Decke zurückgeworfen wird. Einheit Prozent von Pixel/Schritt.
Als Beispiel: Bei 0% wird der Ball gar nicht zurückgeworfen;
bei 100% gibt es keinen Verlust -> Der Ball hüpft (theoretisch) ewig;
bei 200% hüpft der Ball immer höher. - Luftreibung: Gibt an, wie viel Prozent der Geschwindigkeit in X Richtung bei einem Schritt übrig bleiben. Einheit Prozent von Pixel/Schritt.
Als Beispiel: Bei 0% kann der Ball maximal einen Schritt in eine X Richtung machen, bevor er stehen bleibt;
bei 100% kann sich der Ball ungehindert in X Richtung bewegen;
bei 200% wird der Ball immer schneller. - Zieh Faktor: Gibt an, wie viel Prozent der Geschwindigkeit vom Ziehen des Balls auf den Ball übertragen wird (siehe Funktionen: Ziehen). Einheit Prozent von Pixel/Schritt.
Als Beispiel: Bei 0% hat das Ziehen des Balls keine Auswirkung auf den Ball;
bei 100% macht ein Unterschied von einem Pixel eine Geschwindigkeit von einem Pixel/Schritt aus;
bei 200% zwei Pixel/Schritt, etc.
- Ballfarbe und Rahmenfarbe
- Ab Version 2 kann die Ballfarbe für jeden Ball unterschiedlich sein
Funktionen:
- Einzelschritt:
Führt eine einzelne Berechnung durch.
Hilfreich beim genauen Hinsehen.
Hinweis:
Private Sub ApplyPhysics() Handles Timer_Physics.Tick, Button_SingleStep.Click
Diese Codezeile erklärt das, was ich in drei Zeilen nicht erklären kann. - Starten:
Startet den Timer und lässt die Animation automatisch ablaufen.
Das erspart das ewige Klicken. - Pausieren:
Pausiert das automatische Neuberechnen.
Dadurch kann man wieder mit Einzelschritten arbeiten.
- Ziehen:
Der Ball kann mit der Maus über das Feld gezogen werden.
Diese Funktion ist bei weitem nicht perfekt.
Als Referenzpunkt wird der Mittelpunkt des Balles gewählt. Beim Ziehen (mit der linken Maustaste) wird der Unterschied zwischen dem Cursor und dem Mittelpunkt des Balles als neue Geschwindigkeit verwendet. Um extrem übertriebene Geschwindigkeiten zu vermeiden kann ein Prozentsatz der Geschwindigkeit bei "Zieh Faktor" ausgewählt werden.
Vielleicht hilft das Bild "Physik Test Geschwindigkeiten.png" im Anhang.
- Begrenzung oben:
Wenn diese CheckBox aktiviert ist kann der Ball nicht oben aus der Form verschwinden. Wenn eine große negative Y Position vorkommt kann es zu einem Überlauf kommen.
Screenshots:
Sind im Anhang
Dateien und Registrierungseinträge, die erstellt werden:
Keine.
Zumindest nicht vom Programm selbst.
Es kann aber durchaus sein, dass Windows sich da selbst was zurechtbastelt.
Bekannte Bugs:
Version 1:
- "Das Programm frisst den Arbeitsspeicher wie warme Semmeln!"
- Exception "Ungültiger Parameter" beim Minimieren
Version 1.2 (bugfix):
- Arbeitsspeicherauslastung einigermaßen behoben (sind trotzdem immernoch ~210MB)
- Exception beim Minimieren behoben
- Bei der TextBox "Geschwindigkeit Y::" stehen zwei Doppelpunkte
Version 2.0.1:
- Die Arbeitsspeicherauslastung schent behoben zu sein. Oder mein Taskmanager lügt.
- Bälle kollidieren nicht untereinander
Fragen, Anregungen, Wünsche:
Ich beantworte gerne Fragen, wo ich kann. Auch Fragen in der Art "Wie hast Du das und das gelöst?", obwohl das unnötig ist, weil der SourceCode sowoso zugänglich ist.
Auch Tipps, wie man Dinge verbessern kann sind erwünscht (z.B. die Ziehfunktion) und falls jemand noch eine Idee hat, die man einbauen könnte nehme ich auch diese sehr gerne an.
Lizenz:
Open Source
Das heißt die Software darf beliebig weiterverbreitet, verändert, etc. werden. Dekompilieren bringt nichts, weil der SourceCode sowiso zugänglich ist.
Download:
Physik Test Exe.zip - gepackt: ca. 16KB, entpackt: ca. 40KB
Physik Test Projekt.zip - gepackt: ca. 168KB, entpackt: ca. 676KB
Physik Test Exe v1.2.zip - gepackt: ca. 16KB, entpackt: ca. 40KB
Physik Test Projekt v1.2.zip - gepackt: ca. 156KB, entpackt: ca. 644KB
Physik Test Exe v1.2.zip - gepackt: ca. 16KB, entpackt: ca. 44KB
Physik Test Projekt v1.2.zip - gepackt: ca. 184KB, entpackt: ca. 724KB
(Im Anhang)
Zur aktuellen Version:
Die Version 2.0.1 ist nur eine Betaversion.
Ich wollte die Meinung der Benutzer hören und wissen, was ich ändern/verbessern/hinzufügen/entfernen könnte, bevor ich die entgültige Version 2 veröffentliche.
Die Kollisionserkennung zwischen den Bällen funktioniert noch nicht, wird aber ab Version 2.1 behoben sein (Das ist ein dicker Brocken an Mathematik!).
Wenn jemand dazu einen guten Artikel kennt bin ich sehr dankbar.
Da das Hinzufügen und Entfernen von Bällen etwas unübersichtlich gestaltet ist, hier ein Tutorial:
Das Programm startet standardmäßig mit einem grünen Ball. In einer ListBox ist dieser Ball ausgewählt ("Ball0 [0, 128, 0]"). Die Zahlen in den eckigen Klammern gibt die Farbe in RGB Format an (damit man einen gesuchten Ball ein bisschen einfacher findet). In den TextBoxen rechts befinden sich die individuellen Werte des Balles. Solange der Ball ausgewählt ist können diese Werte verändert werden. Auch die Ballfarbe kann verändert werden. Der ausgewählte Ball kann durch Klicken auf "-" unter der ListBox entfernt werden.
In der ListBox befindet sich immer ganz unten der Eintrag "<Neuer Ball>". Wenn dieser Eintrag ausgewählt ist werden in den TextBoxen die Standardwerte angezeigt. Diese Werte können nach Belieben verändert werden. Durch Klicken auf "+" wird ein neuer Ball ins Spielfeld eingefügt und die Auswahl in der ListBox springt zum neuen Eintrag.
Der ausgewählte Ball wird durch zwei Linien markiert, die sich beim Mittelpunkt des Balles treffen.
"Luckily luh... luckily it wasn't poi-"
-- Brady in Wonderland, 23. Februar 2015, 1:56
Desktop Pinner | ApplicationSettings | OnUtils
-- Brady in Wonderland, 23. Februar 2015, 1:56
Desktop Pinner | ApplicationSettings | OnUtils
Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von „Niko Ortner“ ()