Physik 2 Kreise
Übersicht

![]() |
TimBoBetreff: Physik 2 Kreise |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi ,
ich versuche ein Spiel zu Programmieren, das ähnlich wie Billiard ist. Der Unterschied jedoch ist, dass ein Kreis fest an die Maus fixiert ist. Wenn der Kreis der Maus auf einen anderen Kreis trifft, dann soll er sich möglichst realistisch bewegen. Wie rechne ich den Speed des zu interagierenden Kreises aus ? Hier mal ne Skizze: ![]() Die Richtung müsste ja die Gerade sein, auf der M1 und M2 liegt, aber wie rechnet man den Speed aus ? Viele Grüße TimBo |
||
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31 hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht. |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Der Speed ist:
Speed# = MausVektorGeschwindigkeit * Cos ( MausBewegungsVektor - DeinAlphaWinkel ) Allerdings wirst du so einfach nicht DeinAlphaWinkel heraus finden können, da die Mausabfrage als auch die Bildschirmwiederholfrequenz nun mal endlich sind. Soll heissen: Du wirst nicht drum herum kommen, den Kollisionspunkt anhand der beiden Relativgeschwindigkeiten zu ''normalisieren''. Also auf den Abstand beider Radien zu bringen um dann erst den AlphaWinkel ausrechnen zu können. |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: Die Richtung müsste ja die Gerade sein, auf der M1 und M2 liegt, aber wie rechnet man den Speed aus ? So wie ich das Bild sehe, nein. Du hast 2 Vektoren, einmal den des Pucks, dann den des Schlägers. Bei einer Kollision addieren ich die beiden, und somit sollte die Resultierende nach oben rechts weg gehen, nicht nach oben links. (Natürlich kannst du die Spiegeln, da der Schläger ja seine richtung nicht verändern soll, aber ob das so korrekt ist sei mal dahingestellt) |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
TimBo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
danke für eure Antworten ![]() werde mal mit einer bekannten Suchmaschine googlen, was vektorgeschwindigkeiten sind o.O @ Hectic: was meinst du mit Normalisieren ? ich habe das so gemacht: If abstand<=radius then .. meinst du das ? @ BladeRunner: ich habe in den letzten Tagen, während ich nach Physikalischen gleichmäßigkeiten herumexperimentiert habe immer 2 Geldstücke aufeinander prallen lassen, aus langeweile. Da ist mir irgendwann aufgefallen, dass der Winkel so sein könnte. Da habe ich weitere male das Experiment ausgeübt und ich konnte nie widerlegen, dass es so nicht stimm. Bei mir prallt der Puck immer nach oben links. Hast du vll. eine Formel, die den Winkel aussrechnet ? Viele Grüße TimBo |
||
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31 hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht. |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja eben, deine Abfrage If Abstand<=(RadiusMaus+RadiusPuck) Then ... ist das Problem. Nehmen wir mal dein Beispielbild da oben. Wenn ich nun die Maus sehr schnell nach oben bewege und in dem Beispielbild grad noch keine Kollision statt findet dafür aber im nächsten Frame die Maus 40 Pixel weiter ist, dann wäre die Aufschlagrichtung eine ganz andere. Aus diesem Grund sollte man dann beide Objekte anhand ihrer Bewegungsvektoren in ihrer jeweiligen Geschwindigkeit so weit nach hinten ziehen, bis eine Kollision genau auf dem Abstand von (RadiusMaus+RadiusPuck) gebracht wird. Das meinte ich mit ''normalisieren''. Ein anderes Wort ist mir dafür nicht eingefallen.
Außerdem kann es passieren, wenn man die Maus sehr schnell bewegt, dass eine Kollision einfach überflogen wird. Eventuell sollte man da nach Linienkollisionen die Linienbreiten berücksichtigen suchen. Es gibt da sicherlich auch bessere Lösungswege als mit If Abstand zu arbeiten. Edit1: Deine Geldstücke berücksichtigen aber keine Relativgeschwindigkeit, da das getroffene ja immer auf der Tischplatte still stand. Bewegen sich aber beide Geldstücke so wie in deiner Zeichnung angegeben, dann ist die Beschreibung von BladeRunner richtig. |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn du den Kreisen/Kugeln noch eine Masse zuordnest, errechnest du die Geschwindigkeit über den Elastischen Stoß - die Animation 2-dimensionaler elastischer Stoß veranschaulicht hübsch die Vektorpfeile. | ||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group