Billard Physik simulieren - HTML5

Billard Physik

Für ein neues Projekt entwickle ich derzeit ein Billardspiel. In diesem Artikel gehe ich auf die Physik ein. Schon mal vorweg, die Kugeln rotieren nicht, es gibt keinen Spin. Das macht den Physik Teil um einiges einfacher.

Aufschlag

Kommen wir direkt zum ersten spezial Fall des unelastischen Stoßes: Der Aufschlag. Vor dem Aufschlag liegen alle Kugeln, außer der weißen, dicht beieinander und bilden ein Dreieck, eine Einheit, ein ganzes. Der Aufschlag löst also eine Kettenreaktion an Stößen aus und gibt jeder Kugel für einen kurzen Moment die initial Kraft. Durch die geringe Reibung, verlieren die Kugeln wenig Energie beim Aufprall.

Die erste Kugel überträgt ihre volle Energie bis zur letzten Kugel und wieder zurück.

Ein interessantes Video zum Thema ist hier zu finden: planet-schule.de - Angestoßen. In diesem Experiment wird überprüft ob es möglich ist die Kraft eines Aufschlags bis zur letzten Kugel in einer Reihe zu übertragen. Die Reihe besteht aus 600 Kugeln.

Kugel gegen Kugel

Vielleicht auch interessant
Coop Modus - Multiplayer Indie Game - Gether
Coop Modus - Multiplayer Indie Game - Gether

Grundlegende Server/Client Logik mit SFML für Gether.

Etwas anders sieht das Ganze aus, wenn zwei einzelne Kugeln aufeinander prallen. Gehen wir hier vom Fall aus, dass eine der Kugeln ruht.

Die weiße Kugel erlebt einen Impuls, fliegt gegen die andere Kugel und tauscht mit ihr die Kräfte. Wir können hier über einen Austausch reden, da die Kugeln alle die selbe Masse und Größe haben. Bei diesem zusammentreffen beeinflussen die minimale Reibung und eventuelle Drehung der Kugel das Resultat, allerdings lassen wir das hier außer Acht.

Treffen die Kugeln mit zwei verschiedenen Geschwindigkeiten aufeinander passiert beim unelastischen Stoß dass selbe wie zuvor. Die Kräfte werden getauscht.

Aufschlagwinkel

Programmiertechnisch ist vermutlich am interessantesten wie wir die Kugeln in die richtige Richtung bewegen, nachdem sie von einer anderen Kugel getroffen wurden. Wie schaffen wir das?

Das ist viel einfacher als man vermutet, alles was wir hierzu brauchen ist atan2 und die Mittelpunkte beider Kugeln.

var a = Math.atan2(ball1.getY() - ball2.getY(), ball1.getX() - ball2.getX());
var dx= Math.cos(a);
var dy= Math.sin(a);

Mit dx und dy können wir nun die Kugel in die richtige Richtung bewegen.

Mehr zum Thema atan2 findet ihr in folgendem Artikel: In Mausrichtung schießen.

Hinterlasse gerne einen Like oder Kommentar (~‾▿‾)~
Name Text
Kommentare
Salvador Hust> 2 Mt.6 August 2021. This is the last day BestLocalData.com will be online and operate. We are shutting down and all our data is for sale for $99. Regards, Salvador
Mac Grogan> 4 Mt.Hello, It is with sad regret to inform you that BestLocalData.com is shutting down. We have made all our databases for sale for a once-off price. Visit our website to get the best bargain of your life. BestLocalData.com Regards, Mac
Dixie Ballinger> 5 Mt.Hello from SendBulkMails.com, We have a special limited offer for you to send unlimited emails. We allow non-permission based emails and you won't ever get blocked. We also buy your domain for you and give you a clean IP and setup your DNS records. Check us out on SendBulkMails.com
Alfred Rummel> 8 Mt.It is with sad regret to inform you StarDataGroup.com is shutting down. It has been a tough year all round and we decided to go out with a bang! Any group of databases listed below is $49 or $149 for all 16 databases in this one time offer. You can purchase it at www.StarDataGroup.com and view samples. - LinkedIn Database 43,535,433 LinkedIn Records - USA B2B Companies Database 28,147,835 Companies - Forex Forex South Africa 113,550 Forex Traders Forex Australia 135,696 Forex Traders Forex UK 779,674 Forex Traders - UK Companies Database 521,303 Companies - German Databases German Companies Database: 2,209,191 Companies German Executives Database: 985,048 Executives - Australian Companies Database 1,806,596 Companies - UAE Companies Database 950,652 Companies - Affiliate Marketers Database 494,909 records - South African Databases B2B Companies Database: 1,462,227 Companies Directors Database: 758,834 Directors Healthcare Database: 376,599 Medical Professionals Wholesalers Database: 106,932 Wholesalers Real Estate Agent Database: 257,980 Estate Agents Forex South Africa: 113,550 Forex Traders Visit www.stardatagroup.com or contact us with any queries. Kind Regards, StarDataGroup.com