Dieses Programm stellt einen kleinen Leckerbissen für jeden Liebhaber der mechanischen Physik dar, denn es handelt sich hierbei um eine hübsche Anwendung des Impulssatzes.
Ein virtueller Billard-Anstoss
Ein komplexe Szene mit Kugeln aus unterschiedlichen Materialien
Die grosse, grüne Kugel wird aufgrund ihres extrem leichten Materials
von der kleinen, grauen Kugel mit sehr grosser Masse herumgestossen: Auch
solche physikalische Extremszenen lassen sich simulieren.
Bei QuickBASIC und MaxonBASIC können Sie zwischen Strichgrafik wie im untersten Bild und gefüllter Präzisionsdarstellung wählen, wofür jedoch etwas mehr Rechenleistung von Ihrem PC erforderlich ist.
Bei AmigaBASIC existiert aufgrund der langsamen Geschwindigkeit nur die Version mit Strichgrafik, umgekehrt ist bei der C++-Version nur die gefüllte Darstellung möglich.
Die MaxonBASIC-Version arbeitet ferner mit CLI-Parameter anstelle von interaktiven Eingaben. Sie müssen es dort beispielsweise als
1.WORK:MaxonBASIC/Programme> Billard-Simulation -1x situa1.bil
starten. Mit der Option -i aktivieren Sie hochauflösende
Interlace-Darstellung anstelle vom LoRes-Grafikmodus, mit -1
reduzieren Sie die Darstellung auf Schwarzweiss, was besonders auf einem alten
Amiga 500 aufgrund der geringeren DMA-Zugriffen merklich Geschwindigkeit bringt.
Mit -s schalten Sie den Ton ab, dabei wird ein Ton=Ein
in der Datei bewusst ignoriert. -wb veranlasst, die
Workbenchauflösung zu verwenden, was beim AGA-Chipsatz den Vorteil bringt,
flimmerfreie Auflösungen zu nutzen. Unter OS 1.x muss dagegen immer
-1x verwendet werden, um bei MaxonBASIC den Gebrauch der diversen
OS 2.x/3.x-Erweiterungen zu unterdrücken. Die Schalter lassen sich auch
kombinieren.
Diese Simulation erlaubt Ihnen nach Belieben eigene Szenen zu erstellen, die beiliegenden .BIL-Dateien sind dabei die Beispiele wie in den Bildschirmschnappschüssen dargestellt. Im folgenden wird dieses Dateiformat kurz beschrieben.
Die Dateien sind im ASCII-Textformat und besitzen einen zeilenorientierten
Aufbau, wobei jede Zeile der Syntaxregel
<Parameter>=<Wert>
folgt. Zeilen
mit %
sind nur REM
-Kommentare. Die Parameternamen
sind immer 3 Zeichen lang, die Gross-/Kleinschreibung spielt dabei keine
Rolle.
Parametername | Beschreibung | erwarteter Wert | Vorgabewert |
---|---|---|---|
BEc | weiterer Eckpunkt des Bandenpolygons | ZahlX ZahlY | - |
Kug | Weitere Kugel: Indexnummer | Ganzzahl | 1 |
Pos | Anfangsposition der Kugel | ZahlX ZahlY | 0 0 |
Vel | Anfangsgeschwindigkeit kartesisch | ZahlY ZahlY | 0 0 |
Mas | Masse (Gewicht) der Kugel | Zahl | 100 |
Rad | Grösse der Kugel: Radius | Zahl | 10 |
Dic | Dichte: spezifisches Materialgewicht | Zahl | - |
Far | Farbe: Farbnummer im aktuellen Videomodus | Ganzzahl | 10 |
Ton | Flag, ob Sound ein oder aus | ein, aus | ein |
Tol | Zeichengenauigkeit (nur Strichgrafik-Version): Maximal zulässige Abweichung von der ideal genauen Kreislinie in Pixel | Zahl | 0.4 |
VFa | Verkleinerungsfaktor für Bildschirmfaktor als Verhältnis Bildschirmabmessung÷grösste Ausdehnung | Zahl | 1.01 |
LFa | Verlangsamungsfaktor für langsame PCs: 1=Originalgeschwindigkeit, <1=schneller, >1=langsamer | Zahl | 1 |
Bes | optionale Beschleunigung (schräger Tisch) kartesisch | ZahlX ZahlY | 0 0 |
Nei | Tischneigung: G=Erdbeschleunigung, N=Neigungswinkel in °, R=Richtungswinkel in ° | ZahlG ZahlN ZahlR | - |
Einige Anmerkungen dazu:
Kug
erzeugen Sie jeweils eine neue Kugel, alle
folgenden Einträge beziehen sich dann auf diese KugelVFa
-Parameters automatisch in den Bildschirm einDic
-Parameter ist eine Alternative zu
Mas
: Die Masse wird aufgrund des Radius berechnet
=> Rad
muss vorher angegeben werden!Nei
-Parameter stellt eine alternative Form zu
Bes
dar, da dort die Beschleunigung aufgrund der
Neigungsparameter berechnet wird.Bei diesem Programm können Sie die Unterschiede der einzelnen
Programmiersprachen besonders schön beobachten: Während bei C++
objektorientiert mit Klassen gearbeitet wird, ebenso die
QBASIC.EXE mit einem objektbasierten Design auftrumpft, mussten
bei den beiden Amigaversionen aufgrund der fehlenden Strukturtypen die Objekte
in Einzelvariablen »zerschlagen« werden, was neben einem weniger
schönen Programm-Design auch eine erheblich geringere
Ausführgeschwindigkeit bei den SUB
-Unterprogrammaufrufen zur
Folge hat. Aus diesem Grund enthält die Portierung für MaxonBASIC
noch zuätzlich zwei optimierte Versionen, bei welchen lediglich die
Kugelzeichenprozedur durch eine Inline-Codierung ersetzt wurde. Ansonsten
kommen überall die im Artikel über
flimmerfreie Animationen beschriebenen Techniken voll zum Einsatz.
Version für QuickBASIC herunterladen
Umfang: 24 KB
Version für AmigaBASIC herunterladen
Umfang: 18 KB
Version für MaxonBASIC herunterladen
Umfang: 69 KB
Version für DJGPP herunterladen
Umfang: 61 KB + Laufzeitumgebung 59 KB