Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi 2 kreise sollen bei kontakt abprallen (https://www.delphipraxis.net/32706-2-kreise-sollen-bei-kontakt-abprallen.html)

die.sandra 27. Okt 2004 14:31


2 kreise sollen bei kontakt abprallen
 
Hallo!

WER KANN MIR HELFEN????

ich bin absoluter neuanfänger in sachen programmieren -sprich heute mein dritter tag . ich habe die delphi 5 professionalversion zur verfürgung. ich in form1 zwei shapes (kreise) bewegen lassen. funktioniert auch!
nächster schritt war, dass sie erkennen wann sie sich berühren bzw. "überlappen".
hab das damit gelöst (bzw. die richtigkeit der if-bedingung überprüft), dass label1 die farbe, dann ändert.
jetzt soll aber nicht das label1 sein farbe ändern, sondern die shapes sollen reagieren.

:wall:
mein problem:
was soll ich schreiben damit die kugeln abprallen? welche befehle muss ich dafür verwenden???
die kugeln sollen jetzt aber nicht nur einfach so ihre richtung ändern, sondern wie beim echten billard reagieren. also müsste man dann ja irgendwie mit aufprallwinkel arbeiten, oder nich?

also ich hatte das auch schon mal soweit, dass shape1 reagiert hat. Nur: er hat halt seine richtung dann unabhängig vom aufprallswinkel der anderen kugel geändert und ist dann in diesem fall grade nach oben "abgeprallt".

BITTE HELFT MIR!!!

mfg sandra

freak4fun 27. Okt 2004 15:00

Re: 2 kreise sollen bei kontakt abprallen
 
hallo und herzlich willkommen in der DP :hi:

kannst du nicht den aufprallwinkel über die Lage der Mittelpunkte errechnen :gruebel: , ich glaube das hat nicht mit programmieren zu tun sondern erstmal mit mathematik :chat:

hoffe du schaft das

mfg
freak

Nonsense 27. Okt 2004 15:02

Re: 2 kreise sollen bei kontakt abprallen
 
Zitat:

Zitat von freak4fun
kannst du nicht den aufprallwinkel über die Lage der Mittelpunkte errechnen :gruebel: , ich glaube das hat nicht mit programmieren zu tun sondern erstmal mit mathematik :chat:

Jupp, ist total simple analytische Geometrie.

Stevie 27. Okt 2004 15:04

Re: 2 kreise sollen bei kontakt abprallen
 
Stichwort Vektorrechnung :wink:

fiasko 27. Okt 2004 15:07

Re: 2 kreise sollen bei kontakt abprallen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

erstmal auch ein herzliches Willkommen in der DP!

Für die Berechnung siehe Bild im Anhang: man zerlegt die Bewegungsvektoren (k1 und k2) in die Bestandteile die entlang der Mittelpunktgeraden verlaufen (m1 und m2) und in die Senkrechten dazu (o1 und o2). Mittels m1 und m2 berechnet man dann den Stoß und die Ergebnisvektoren werden dann wieder mit den o1 und o2 verrechnet.

(In dem Bild liegen die o's und m's nicht ganz auf der Linie/rechten Winkel... hatte keine Lust damit rumzufriemeln :stupid:)

freak4fun 27. Okt 2004 15:07

Re: 2 kreise sollen bei kontakt abprallen
 
hallo

ich hab zwar Mathe LK hinter mir aber muss da auch erstmal wieder rein ... ich versuchs einfach auch mal zu proggen. wenn du es geschaft hast kannste mir ja mal nen tipp geben oder vergleichen :roll:

mfg
freak

Nonsense 27. Okt 2004 15:09

Re: 2 kreise sollen bei kontakt abprallen
 
Korrigiert mich, wenn ich falsch liege, aber man könnte doch aus den beiden Mittelpunkten und dem Koordinaten-Ursprung jeweils einen Vektor machen und diese dann addieren.
Jetzt bastelt man sich noch einen dritten Vektor mit dem unteren Mittelpunkt als Ortvektor und dem Richtungsvektor der X-Achse und überprüft dann den Schnittwinkel der beiden Geraden.

Edit: Rechtschreibung

fiasko 27. Okt 2004 15:11

Re: 2 kreise sollen bei kontakt abprallen
 
Du brauchst doch aber die Bewegungsenergie die entlang des Aufpralls wirkt damit du den Stoß berechnen kannst. In einer rein geoanalytischem Ansatz hast du ja keine Masse drinne :gruebel:

Nonsense 27. Okt 2004 15:14

Re: 2 kreise sollen bei kontakt abprallen
 
Zitat:

Zitat von fiasko
Du brauchst doch aber die Bewegungsenergie die entlang des Aufpralls wirkt damit du den Stoß berechnen kannst. In einer rein geoanalytischem Ansatz hast du ja keine Masse drinne :gruebel:

Bin kein Physiker, aber ich hätte jetzt die Geschwindigkeit in einer extra Variable gespeichert.
Ok, wenn man es jetzt wie eine Billiard-Kugel haben will, wird man mit meiner Rechnung nicht weit kommen.

die.sandra 27. Okt 2004 15:16

Re: 2 kreise sollen bei kontakt abprallen
 
Hallo!

Ist ja alles ganz toll, aber wirklich was mit anfangen kann ich nicht. :gruebel:
Nur mal zur Info : bin 11. KLasse gym *lol*
wäre dann ganz sinnvoll wenn ihr nicht nur das stichwort sagt, sondern was ich auch programmieren muss.
Denn selbst wenn ich das jetzt mathematisch lösen könnte, wüsste ich immer noch nicht was ich da jetzt in delphi schreiben müsste?!

Ciao Sandra

PS:
Bin morgen erst wieder on!

freak4fun 27. Okt 2004 15:17

Re: 2 kreise sollen bei kontakt abprallen
 
öhm... leute meint ihr nocht des is fürn delphi-anfänger bisschen schwierig des so auf einmal zu machen? :gruebel:
ich würde sagen eins nach dem anderen ... :angel:

prüfen wann sie sich berühren ... dann abprallen lassen(gleiche geschwindigkeit) ... die richtung ermitteln ... und dann weitersehen :mrgreen:

Oder so wie ihr, aber da sag ich nur: :wiejetzt:

mfg
freak

freak4fun 27. Okt 2004 15:20

Re: 2 kreise sollen bei kontakt abprallen
 
öhm...

könntest du vielleicht mal posten was du schon hast?
... son bisschen quelltext vielleicht :mrgreen:

und wenn hier mal jemand ne komplette lösung posted bekommt man was aufn deckel weil doch jeder selbst alles rausfinden bzw wissen soll :pale:

aber keine angst wir helfen dir schon :idea:


mfg
freak

StefanDP 27. Okt 2004 15:57

Re: 2 kreise sollen bei kontakt abprallen
 
Da steht es 1:1 wie es geht (also von der Physik seite betrachtet):
http://www.tobias-nopper.de/BillardG...physik-de.html

Ist aber eher ein exterm mathematisches Problem!

dizzy 27. Okt 2004 16:19

Re: 2 kreise sollen bei kontakt abprallen
 
Zitat:

Zitat von freak4fun
und wenn hier mal jemand ne komplette lösung posted bekommt man was aufn deckel weil doch jeder selbst alles rausfinden bzw wissen soll :pale:

Was ja auch völlig korrekt so ist. Sonst ist der Lerneffekt = 0, und darum geht es in der Schule nun mal ;).

Man wird, wenn man in etwa an das Verhalten von Billiardkugeln heranzukommen, um Mathe+Winkel+Vektoren nicht herum kommen. Ich bin mir nichtmal mehr sicher, ob ich die Grundlagen dazu schon in der 11. Klasse komplett hatte :gruebel:.
Alles in allem finde ich die Verwendung von Shapes schon... naja, reichlich unschön. Aber wenn es denn sein soll ;).

Das Problem mit der Geschwindigkeit:
Du hast für jeden Kreis ja einen Ortsvektor, der dir angibt wo sich dein Kreis befindet, und zudem einen Richtungsvektor der jeden Bewegungsschritt auf den Ortsvektor addiert wird. Die Länge dieses Richtungsvektors ist die Geschwindigkeit des Kreises (in Pixel pro Intervall).
Wenn du den Aufprallwinkel dann mal hast, und man davon ausgeht, dass beide "Kugeln" die gleiche Masse haben, dann verteilen sich nach dem Stoß die beiden Richtungsvektoren beider Kugeln gleichmäßig. => Beide Kugeln sind nachher gleich schnell. Und das sogar nur bei einem direkten Stoß. Wenn die Kugeln dezentral aufeinanderprallen, dann verlagert sich der Impuls wiederum anders.

Wenn du dann auch noch möchtest dass man simuliert, dass bei einem Stoß ja ein Teil der Energie in Wärme übergeht, und somit der Geschwindigkeit fehlt, dann musst du die Richtungsvektoren auch noch um einen Faktor kleiner skalieren.

Alles in allem ist der dezentrale Stoß von Kugeln ein nicht zu unterschätzendes Thema. Und mit der Programmiereung braucht man imho erst garnicht anzufangen, wenn man die Theorie dahinter nicht vertanden hat.
Wenn du weisst welche Größen du kennst, und wie sie miteinander zu verrechnen sind, dann ist der eigentliche Code die wenigste Arbeit, da Delphi ja syntaktisch so schön an der Mathematik orientiert ist ;).

Wenn du die Aufgabe so von deinem Lehrer hast, würde ich ihn mal fragen ob das sein Ernst war - oder dich selbst, ob du im Unterricht alles mitbekommen hast :wink:.

Nach fertigem Code fragen bringt dich idR kein Stück weiter - und zudem wirst du den hier wahrscheinlich auch nicht bekommen.


@StefanDP: Dort ist aber auch nur der zentrale Stoß beschrieben. Der ist deutlich einfacher, aber reicht für eine brauchbare Billard-Simulation leider nicht.
Zwar läuft das mit den Richtungen gleich ab, aber das Problem mit der Geschwindigkeitsverteilung bleibt.
Ist die Frage wie weit man gehen will :). (Der Tisch hat nen Reibungskoeffizenten, die Kugeln auch z.B. :mrgreen:)

Gruss,
Fabian

Nonsense 27. Okt 2004 16:58

Re: 2 kreise sollen bei kontakt abprallen
 
@dizzy: Habe (leider) kein Physik mehr und deshalb steig' ich da gerade nicht hinter.
Wie kann denn die Länge vom Richtungsvektor die Geschwindigkeit festlegen? Mein Problem ist jetzt wohl, dass ich es rein mathematisch betrachte. Würde mich jetzt mal interessieren (der Rest ist soweit logisch).

dizzy 27. Okt 2004 18:00

Re: 2 kreise sollen bei kontakt abprallen
 
Wenn der Richtungsvektor die Verschiebung von Zeitpunkt A nach Zeitpunkt B darstellt, dann stellt seine Länge ein Maß für die Geschwindigkeit dar. Je länger dieser Vektor ist, desto weiter ist ist das Objekt vom vorigen Ort weg.

Nur ist die Einheit auf dem PC etwas anders, und nicht km/h o.ä., da (im trivialen Fall) die Entfernung in Pixeln gegeben ist, und die Zeiteinheit ist die Dauer von Zeitpunkt A bis Zeitpunkt B, die ja nicht notwendigerweise eine Stunde, oder eine Sekunde ist.
Also hat man nachher die Geschwindigkeit in px/i, mit px=Pixel; i=Messintervalllänge (z.B. wenn es per TTimer passiert, dann halt das Timerintevall).

Nonsense 27. Okt 2004 18:21

Re: 2 kreise sollen bei kontakt abprallen
 
Hmm, also wenn ich da richtig verstanden habe, ist es eigentlich egal, ob ich die Geschwindigkeit in einer "normalen" Variable speichere oder als Betrag des Richtungsvektors, richtig?

dizzy 27. Okt 2004 18:40

Re: 2 kreise sollen bei kontakt abprallen
 
Es kommt darauf an, wie du deine Bewegung letztendlich anstellst. Man könnte auch daher gehen und den Richtungsvektor immer gleich lang lassen, und die Geschwindigkeit darüber regeln, dass man z.B. am Timer schraubt.

Wenn du die Geschwindigkeit separat mitführst, macht das eigentlich nur zu Informationszwecken sinn, und die wäre ohnehin aus dem Richtungsvektor zu berechnen. Aber um diese Geschwindigkeitsangabe dann wirklich zu nutzen musst du deinen Richtungsvektor auf diesen Wert skalieren - und schon sind wir wieder am Anfang.

Ein kleines Bsp:

Es sei ein Punkt zum Zeitpunkt z0=0sec an den Koordinaten (3 / 3)
Zum Zeitpunkt z1=1sec sei er an den Koordinaten (6 / 7)

Die Verschiebung ist als Vektor folgendermaßen beschrieben: v = (3 / 4)
Die Länge von v ist sqrt(25) = 5.
Also ist der Punkt an z1 5 Einheiten von seiner Position an z0 entfernt.

dz sei die Zeitdifferenz zwischen z0 und z1. Somit hat der Punkt 5 Pixel Weg in der Zeitspanne dz zurückgelegt, also 5px/dz; wobei dz auch "Intervall" genannt werden kann ;).
In unserem Fall ist dz=1sec, also hat der Punkt 5px/s zurückgelegt.

Nonsense 27. Okt 2004 18:48

Re: 2 kreise sollen bei kontakt abprallen
 
Wie das ganze funzt, weiß ich ja. Wollte nur wissen, ob es da irgendeinen special Grund für gibt, warum das über den Richtungsvektor läuft.
Trotzdem: Frage beantwortet. :zwinker: Danke!

fiasko 27. Okt 2004 18:53

Re: 2 kreise sollen bei kontakt abprallen
 
Zitat:

Zitat von dizzy
@StefanDP: Dort ist aber auch nur der zentrale Stoß beschrieben. Der ist deutlich einfacher, aber reicht für eine brauchbare Billard-Simulation leider nicht.

Ähm, die Seite hat den gleichen Ansatz wie meiner - und wieso soll das für dezentrale Stöße nicht klappen (bzw. kann du mal einen dezentralen Stoß bei 2 Kreisen aufmalen) :gruebel:

dizzy 27. Okt 2004 23:14

Re: 2 kreise sollen bei kontakt abprallen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von fiasko
kann du mal einen dezentralen Stoß bei 2 Kreisen aufmalen

Klar, siehe Anhang. Die Kugeln treffen sich ja nicht genau, sondern "schlittern" aneinander vorbei. Die Richtungsvektoren an sich zu bekommen ist imho nicht so schwer, aber wie sieht es mit der Geschwindigkeitsverteilung aus? Da gibt's mit Sicherheit auch eine Formel für... ;).
Aber es ist zunächst mal etwas aufwändiger als ein zentraler Stoß, bei dem ja der volle Impuls der stoßenden Kugel auf die ruhende Übergeht. Man merke auf: Eine der beiden ruht! Wenn sich beide bewegen wird's auch schon wieder was kniffliger, selbst beim zentralen Stoß.

xineohp 28. Okt 2004 01:03

Re: 2 kreise sollen bei kontakt abprallen
 
moin,

Das Thema Kollision von Kugeln hatten wir schonmal. Hatte mich damals mal damit beschäftigt ... bin aber leider zu keinem 100%ig korrekten Ergebnis gekommen. (Ansatz wie von fiasko beschrieben) Aus einem mir unbekannten Grund werden nur senkrechte Kollisionen richtig berechnet, bei allen "schiefen" Varianten treten Fehler auf?!
Ins besondere bei mehr als zwei Kugeln werden die Dinger immer schneller!

lezter Post im alten Thread (der Rest ist meines Erachtens nicht wirklich relevant): hier

dizzy 28. Okt 2004 02:23

Re: 2 kreise sollen bei kontakt abprallen
 
Also ich hab jetzt mal etwas rumgegoogled, und bin doch sehr erstaunt darüber, dass es zu dem dezentralen Stoß von Kugeln erbärmlich wenig Material gibt.
Diese Tatsache, und das Bischen (wenig brauchbares) was ich gefunden habe zeigen mir, dass dies ein garnicht sooo leichtes Thema ist.

Aus einer Überlegung heraus würde ich behaupten, dass wenn eine Kugel steht, und von einer anderen getroffen wird, die stoßende Kugel einen Anteil ihres Impulses auf die ruhende Kugel überträgt, und zwar mit:

Impuls*cos(alpha)

wobei alpha der Winkel zwischen der Geraden durch die Mittelpunkte der Kugeln, und dem Richtungsvektor der stoßenden Kugel ist; und zwar zum Zeitpunkt des Aufpralls.

Die stoßende Kugel verliert diesen Impuls, so dass die Impulserhaltung gewahrt wäre. "Impuls" ist hier übrigends gleich mit Geschwindigkeit, verknüpft mit einer Richtung. Also entspricht der Impuls einem Vektor => dem Richtungsvektor. Seine Länge muss je Kugel entsprechend o.g. Zusammenhangs skaliert werden.

Was noch ein ganz anderes Problem ist: In welche Richtung zeigen denn die Vektoren nach dem Stoß?

Und was noch viel schlimmer ist: Wenn sich beide Kugeln bewegen, dann kann das noch mal ekeliger werden.

Es kann gut sein, dass ich mich durch das ganze Zeug dass ich gefunden habe jetzt völlig verbohrt bin, und dass das eigentlich voll einfach ist... ist ja auch nicht mehr so früh :pale:.
Mich würde eine Gesamtlösung für den dezentralen vollelastischen Stoß zweier nicht ruhender Kugeln jetzt auch sehr interessieren... da habt ihr was angerichtet :D.

Au Backe... wenn da noch Rotation+Gleitreibung+Haftreibung mit bei kommen... :stupid: ich frage mich, wie so ein Billardspiel das macht... kann doch eigentlich garnicht so schwer sein, oder? :gruebel:



Oh warte! Idee!
Über die Vektoren könnte es tatsächlich recht einfach gehen.
Nennen wir mal einen Richtungsvektor der Kugel 1: V1 und der Kugel 2: V2
Nennen wir die Mittelpunkte der Kugeln: M1 und M2
Die Gerade durch die Mittelpunkte: G
Den Winkel von V1 zu G nennen wir a1,
den Winkel von V2 zu G nennen wir a2.

Der Impulsanteil der von Kugel 1 auf Kugel 2 übergeht ist dann:
cos(a1) (zum Zeitpunkt des Aufpralls)
Der Impulsanteil der von Kugel 2 auf Kugel 1 übergeht ist:
cos(a2) (zum Zeitpunkt des Aufpralls)

Dann ist der Richtungsvektor von Kugel 1 nach dem Stoß:
V1' = V1 + V2*cos(a2) - V1*(1-cos(a1))
Und der von Kugel 2:
V2' = V2 + V1*cos(a1) - V2*(1-cos(a2))

Damit wäre der Impuls gewahrt, und die Richtungen dürften auch stimmen. Ein wenig Kopfzerbrechen bereitet mir der Cosinus, aber ich hab das mal für ein paar Fälle von Hand gerechnet, und das sah nicht so falsch aus. (Vorausgesetzt ich hab zu dieser doch zu sehr fortgeschrittenen Zeit keine bösen Patzer gemacht :freak:.)

Ich geh jetzt erstmal an der Matratze horchen :).
N8 alle!
Fabian

die.sandra 28. Okt 2004 08:06

Re: 2 kreise sollen bei kontakt abprallen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo!
Ich glaube ich hatte mich etwas falsch ausgedrückt. Das soll keine simulation eines billardspiels werden!!!!
Nochmal:
1. aufgabe war: ein shape (kreis), der sich nur nach rechts bewegt. der läuft dann aber irgendwann
aus dem form1 raus. also muss der abprallen, sowohl rechts also auch links. also hatte ich dann
nen kreis der von links nach rechts läuft und umgekehrt.
2. jetzt sollte der kreis schräg laufen, also runter+rechts und so weiter. natürlich sollte der
kreis dann auch wieder an den rändern von form1 abprallen.
*war ganz schön happy als ich das dann schon mal geschafft hatte* :hello:
3. jetzt sollte ein zweiter kreis genau das gleiche machen . no problem
4. jetzt sollten die shapes aneinander abprallen, sprich genauso wie sie es an den rändern machen.
ich weiß aber nicht was ich programmieren soll, was die kreise machen sollen wenn sie sich
berühren. habe schon mal geprüft ob denn der erste teil "if" richtig ist, indem ein
label dann die farbe ändert. und es ändert die farbe *jippie*

=== jetzt sollen die kugeln halt abprallen im richtigen winkel, aber auch nur das. nicht noch mit
richtiger geschwindigkeit u.ä.!!!!!!!!!!!!

Zitat:

öhm... leute meint ihr nocht des is fürn delphi-anfänger bisschen schwierig des so auf einmal zu machen? ich würde sagen eins nach dem anderen ...

prüfen wann sie sich berühren ... dann abprallen lassen(gleiche geschwindigkeit) ... die richtung ermitteln ... und dann weitersehen

Oder so wie ihr, aber da sag ich nur:

mfg
freak
GENAU DAS!!!!!!!!!

Sandra

ps: mach das hier nicht inner schule. das hier ist praktikum seit montag. was heißt ich habe montag zum ersten mal delphi gesehen!?! also ich fin das ja auch sehr (!!!) schwer, weil ich ja überhaupt keine ahnung hab was ich in delphi schreiben soll! :cry:
also wäre es mir im prinzip vollkommen egal, ob ich hierbei was lerne oder nicht. schätze mal, dass ich das sowieso ziehmlich schnell wieder vergessen werde, wenn das praktikum nächsten freitag zu ende ist. ich glaube ich werde dann auch nicht mehr was in dieser richtung machen. :roll:

Trotzdem will ich das mit den düssiligen kreisen jetzt schaffen! oder zumindest versuchen mit sehr viel hilfe von euch! :mrgreen:


PPS: Mein quelltext

freak4fun 28. Okt 2004 08:24

Re: 2 kreise sollen bei kontakt abprallen
 
hallo

also ich finde des schon ganz gut was du geschaft hast sandra :cat:

ich hab mal son bisschen rumgespielt, aber ich denke ich mach das zu kompliziert :wall: aber bin eher der typ der erstmal beim probiren auf die fr***e fällt :angel2:

ich schau mir deinen quelltext an und schau dann weiter

mfg
freak

freak4fun 28. Okt 2004 08:30

Re: 2 kreise sollen bei kontakt abprallen
 
hallo

ja öhm... also :drunken:

sandra könntest du vielleicht alle notwendigen Dateien für delphi schicken? :gruebel: :mrgreen:

Am besten (ich hoffe du hast einen) den Projektordner zippen und hochladen. :angel2:

thx

mfg
freak

freak4fun 28. Okt 2004 09:39

Re: 2 kreise sollen bei kontakt abprallen
 
hallo

entschuldigung wegen drei mal hintereinander posten, aber ich bekomm noch nicht mal hin das des ding von der wand abprallt und hin- und herläuft. Kann mir da mal bitte jemand helfen?

(ich wollt kein neuen Thread aufmachen)
:wiejetzt:

//Edit: Bitte mit Lokalen Variablen.

mfg
freak

fiasko 28. Okt 2004 12:39

Re: 2 kreise sollen bei kontakt abprallen
 
Hallo,

Zitat:

Zitat von dizzy
Zitat:

Zitat von fiasko
kann du mal einen dezentralen Stoß bei 2 Kreisen aufmalen

Klar, siehe Anhang. Die Kugeln treffen sich ja nicht genau, sondern "schlittern" aneinander vorbei. Die Richtungsvektoren an sich zu bekommen ist imho nicht so schwer, aber wie sieht es mit der Geschwindigkeitsverteilung aus? Da gibt's mit Sicherheit auch eine Formel für... ;).
Aber es ist zunächst mal etwas aufwändiger als ein zentraler Stoß, bei dem ja der volle Impuls der stoßenden Kugel auf die ruhende Übergeht. Man merke auf: Eine der beiden ruht! Wenn sich beide bewegen wird's auch schon wieder was kniffliger, selbst beim zentralen Stoß.

hast du dir mal meinen Ansatz bzw. den von der Web-Site richtig durchgelesen? Sowohl ich als auch die haben einen dezentralen Stoß aufgemalt und dann einfach über das Skalarprodukt den Anteil für den direkten Stoß! Wenn man jetzt natürlich noch die durch die Haftungreibung entstehende Rotationsenergie mit reinrechnet wird es aufwendiger - aber das soll hier wohl doch nicht sein.

@die.sandra:

Wenn ich das richtig verstanden habe soll die Kugel nur an den Wänden abprallen? Das ist dann ganz einfach: du hast doch irgendwo 2 Variablen für die X und die Y verschiebung für jeden Takt?! Wenn das ding an die Decke oder am Boden abprallt ändert sich das vorzeichen beim Y, sonst beim X und fertig.

Wenn du den Code der Unit des Formulars postest können wir auch noch genauer helfen, nur die .dpr reicht nicht :mrgreen:

dizzy 28. Okt 2004 13:18

Re: 2 kreise sollen bei kontakt abprallen
 
Zitat:

Zitat von fiasko
hast du dir mal meinen Ansatz bzw. den von der Web-Site richtig durchgelesen?

:oops: Scheinbar nicht... aber guck mal auf die Uhrzeit meines Posts, da kann man das nicht mehr erwarten :wink:. Das Verfahren scheint mir schlüssig.

Bei meiner Idee von gestern ist mir als ich im Bett lag auch noch ein Denkfehler aufgefallen. die Formeln müssten eigentlich so heissen:
V1' = V1*(1-cos(a1)) + V2*cos(a2)
V2' = V2*(1-cos(a2)) + V1*cos(a1)

Jetzt wäre natürlich interessant, ob der Weg über das Skalarprodukt und mein Gewurschtel identisch sind (zumindest fände ich das interessant :D). Was aber klar sein dürfte ist, dass sich der Weg über's Skalarprodukt deutlich performanter proggen lässt als mein Trigonometrie-Haufen - wobei man, wenn man sich anschaut wie man den Winkel zwischen 2 Vektoren ausrechnet, sich die ganzen Cosinüsse (:)) auch sparen kann!

Zitat:

Zitat von die.sandra
jetzt sollen die kugeln halt abprallen im richtigen winkel, aber auch nur das. nicht noch mit
richtiger geschwindigkeit u.ä.!!!!!!!!!!!!

Mit dem richtigen Winkel hast du auch gleich die richtige Geschwindigkeit. Die gehören einfach zusammen ;).

lg,
Fabian

dizzy 28. Okt 2004 14:29

Re: 2 kreise sollen bei kontakt abprallen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hab mal beide Methoden verglichen, und sie sind im Endeffekt gleichwertig. Hab mal angehängt, wie sich das Ganze sehr einfach, und ohne jede trigonometrische Funktion lösen ließe. Da viele Redundanzen drin sind, ist das auch recht flott programmierbar (schätze ich). Das dürfte im Wesentlichen die Lösung sein, der man öfter begegnet, die aber immer so sau-blöd verklausuliert wird. Zumal die meisten da anfangen mit Winkel und irgendwelchen Wörtern die kein Mensch braucht, aber keiner schreibt einfach mal ne endgültige Formel hin! :stupid:

Ich hoffe jetzt mal, dass das einigermaßen richtig ist, dass ich mich nachher mit meinem 1001. Post (:party:) nicht zum Brot mache :).

xineohp 28. Okt 2004 15:16

Re: 2 kreise sollen bei kontakt abprallen
 
@dizzy:

Wenn ich mich jetzt nicht völlig vertan habe, dann ist das so ziemlich der Weg den ich damals auch eingeschlagen hatte und bei dem ich die obengenannten Probleme hatte.
Hast du das ganze mal praktisch umgesetzt/ausprobiert? und nach x Kollisionen mal die Summe der Gewschwindigkeitsvektoren verglichen?

carjacker 19. Apr 2007 16:35

Re: 2 kreise sollen bei kontakt abprallen
 
Hallo erstmal alle zusammen...
ich hab fast das gleiche problem...
im GK Informatik 11. KLasse (LK gibt es leider nicht -.-) wurde uns als aufgabe gestellt mit den von uns bekannten mitteln ein kleines Programm/Spiel zu schreiben. Wir arbeiten jedoch im moment mit Stifte und Mäuse um erstmal in die OOP reinzukommen... das ganze ist auch eigtl. alles recht easy und ich habe jetzt auf die schnelle eine art billiard spiel geschrieben mit Cue und Kugel und TIsch und son gedöns...
mein einziges Problem liegt jetz aber bei der Kollision der Kugeln...
insgesamt habe ich 6 Kugeln auf dem Feld und muss diese irgendwie von einander abprallen lassen wenn sie zusammenstoßen...
jetzt habe ich das problem dass ich 1. fast NIX von Vektorrechnung verstehe und erst recht nicht in Delphi und 2. ich sogar meine das ich diese garnicht mit Stifte und Mäuse andwenden kann... bin mir da aber nicht ganz sicher...
mein Kugel hat als Attribute den Winkel die x und y geschwindigkeit (aus denen sich natürlich ganz leicht die hauptgeschwindigkeit errechnen lässt) und die x und y position... außerdem noch neben vielen für diesen fall unwichtigen funktionen die Abfrage getroffen? in der ich überprüfen kann ob die Kugel getroffen wurde oder nicht....
wäre super wenn hier nen paar lösungsvorschläge kämen.. muss das ganze bald abgeben...

gruß
carjacker

g0rmed 19. Apr 2007 19:53

Re: 2 kreise sollen bei kontakt abprallen
 
Das Thema ist schon etwas alter...aber ne Antwort steht doch nen bissel weiter oben. GK info...das währ cool gewesen...bei uns geht das gar net(S-A). Wegen der Vektorrechnung...das hat man doch...ach ne...scheiß bildungssystem...

Corpsman 19. Apr 2007 21:12

Re: 2 kreise sollen bei kontakt abprallen
 
Zu diesem Thema gibt es doch dieses Sample das ich jetzt bestimmt schon 10 - 20 mal hier im Forum Verlingt habe.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:15 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz