AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi [erledigt] Ball rollt und hält nicht an - Reibung

[erledigt] Ball rollt und hält nicht an - Reibung

Ein Thema von Airblader · begonnen am 28. Feb 2006 · letzter Beitrag vom 28. Feb 2006
Antwort Antwort
Benutzerbild von Airblader
Airblader

Registriert seit: 29. Okt 2004
Ort: Geislingen an der Steige
742 Beiträge
 
#1

[erledigt] Ball rollt und hält nicht an - Reibung

  Alt 28. Feb 2006, 22:14
Hi
Ich habe hier grade ein sehr nerviges Problem...

Es geht darum, dass Bälle (Sollen später mal Snookerbälle präsentieren ) auf einem Tisch rollen.
Logischerweise verlieren sie dabei Geschwindigkeit durch die Bodenreibung.
Deshalb multipliziere ich den Bewegungsvektor in jedem Rechenschritt mit einem Reibungsfaktor, den ich momentan so auf ~0.995 habe.

Das Problem:
Die Kugel wird zwar langsam, aber wenn man denkt, sie steht, rollt sie noch ne Weile im Minitempo weiter (anfangs so jede 1-2 Sekunden noch ein Pixelchen).

Darum meine Frage:
Die Geschwindigkeitsabnahme muss doch - ein ebener Tisch vorausgesetzt - linear ablaufen. Doch wie kann ich dieses Problem umgehen?
Ich kann zwar einfach ab einer gewissen Geschw. sagen, der neue Bewegungsvektor ist 0, aber das klingt in meinen Ohren noch irgendwie unsauber.

Jemand eine Idee?

MfG, air
Ingo Bürk
Es nimmt der Augenblick, was Jahre geben.

Johann Wolfgang von Goethe
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#2

Re: Ball rollt...und rollt...und rollt

  Alt 28. Feb 2006, 22:22
Zitat:
Deshalb multipliziere ich den Bewegungsvektor in jedem Rechenschritt mit einem Reibungsfaktor, den ich momentan so auf ~0.995 habe.
Zitat:
Die Geschwindigkeitsabnahme muss doch - ein ebener Tisch vorausgesetzt - linear ablaufen.
Das widerspricht sich. Wenn du bei jedem Zeitsschritt den neuen Wert errechnest, indem du den alten mit 0,995 multiplizierst, simulierst du einen exponentiellen Zerfall und die Kugel wird nie zu Ruhe kommen.
So wie ich es verstanden habe, geht es hier nur darum, eine einsame Kugel zu simulieren. Mit der Gleichung für die Reibungseenergie (W=Weg*Reibuungskraft) und der für kinetische Energie kannst du einfach analytisch den Zielpunkt berechnen. Wenn Kugeln im Weg liegen, kannst du einfach ausrechnen, wann die Kugeln sich treffen, und rechne dann über die Gleichungen die Geschwindigkeit an diesem Ort aus.

Für die Kollision könnte dir ein Programm helfen, dass ich letztes Jahr für die zweite Runde des BWINF geschrieben habe:
Angehängte Dateien
Dateityp: zip aufgabe_1_154.zip (1,82 MB, 24x aufgerufen)
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Benutzerbild von Airblader
Airblader

Registriert seit: 29. Okt 2004
Ort: Geislingen an der Steige
742 Beiträge
 
#3

Re: Ball rollt...und rollt...und rollt

  Alt 28. Feb 2006, 22:30
Ups...stimmt. War wohl ein Denkfehler, ist aber auch spät.

Die Kollision etc. habe ich ja alles, es geht hier nur um die Abnahme.
Vorberechnen geht auch nicht, es soll ja Echtzeitsimuliert werden

*ratter ratter* Also muss ich den Bewegungsvektor per Subtraktion verkleinern.
Muss ich nur nen geeigneten Wert finden...allerdings würde das ja auch recht unrealistisch werden.

Gibts da evtl. Werte für sowas?

air

Edit:
Narf, das Problem mit den negativen Werten kommt natürlich dazu
Momentan habe ich es zwar hinbekommen (Schätzwert für die Reibung), aber ob das so ganz sauber ist.
Ich überprüfe erst, ob der Wert größer oder kleiner 0 ist und je nachdem subtrahiere oder addiere ich den Reibungsfaktor.
Ist der Wert innerhalb gewisser Grenzen nahe an 0, so setze ich ihn direkt auf 0 (damit er nicht so ganz leicht zittert).
Ingo Bürk
Es nimmt der Augenblick, was Jahre geben.

Johann Wolfgang von Goethe
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#4

Re: Ball rollt...und rollt...und rollt

  Alt 28. Feb 2006, 22:49
Was du natürlich auch berücksichtigen musst, ist der Drehimpuls, den die Kugel hat. Je nachdem, wie groß der ist, und wie sich die Kugel dreht, musst du dann auch bei Energieüberlegungen diese Energie betrachten.
Wenn das aber ein halbwegs realistisches Snooker werden soll, solltest du von Anfang an genau rechnen und dann die Ergebnisse auf dem Bildschirm anzeigen lassen. Wenn du hier versuchst, so etwas zu simulieren, wirst du später vor dem Problem stehen, dass du die Zeitintervalle, in denen du den Zustand der Kugeln bestimmst, gegen Null laufen lassen musst und das stelle ich mir als deutlich schwieriger vor, als die genauen Gleichungen hinzuschreiben und die dann Lösen zu lassen.

Für solche Probleme wirst du beim Physiker-Board sicherlich Hilfe finden.
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Benutzerbild von Airblader
Airblader

Registriert seit: 29. Okt 2004
Ort: Geislingen an der Steige
742 Beiträge
 
#5

Re: Ball rollt...und rollt...und rollt

  Alt 28. Feb 2006, 22:59
Dass ich auf Timebased Movement umstellen muss, ist mir eig. schon auch klar, sonst hätte es ja so oder so keinen Sinn
Danke jedenfalls mal für den Link Für heute mach ich erstmal Schluss - jetzt kommt schließlich Snooker

Aber werde dann mal im Board nachfragen.

air
Ingo Bürk
Es nimmt der Augenblick, was Jahre geben.

Johann Wolfgang von Goethe
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Ball rollt...und rollt...und rollt

  Alt 28. Feb 2006, 23:10
Du bist nun schon über ein Jahr dabei, langsam solltest du wissen, das wir hier aussagekräftige Threadtitel wünschen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Airblader
Airblader

Registriert seit: 29. Okt 2004
Ort: Geislingen an der Steige
742 Beiträge
 
#7

Re: Ball rollt...und rollt...und rollt

  Alt 28. Feb 2006, 23:17
Zitat von Luckie:
Du bist nun schon über ein Jahr dabei, langsam solltest du wissen, das wir hier aussagekräftige Threadtitel wünschen.
Entschuldige, aber ich denke, dass trifft das Thema doch auf den Punkt?
Jedenfalls habe ich ja nicht "Hilfe habe ein Problem" geschrieben

Aber naja...wenn du das nicht für aussagekräftig genug hälst, denk ich mir eben was besseres aus
Anfangs habe ich ja noch nicht gewusst, warum er nicht anhält

air
Ingo Bürk
Es nimmt der Augenblick, was Jahre geben.

Johann Wolfgang von Goethe
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

Re: [erledigt] Ball rollt und hält nicht an - Reibung

  Alt 28. Feb 2006, 23:31
Simulation einer rollenden Billardkugel.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Airblader
Airblader

Registriert seit: 29. Okt 2004
Ort: Geislingen an der Steige
742 Beiträge
 
#9

Re: [erledigt] Ball rollt und hält nicht an - Reibung

  Alt 28. Feb 2006, 23:40
Zitat von Luckie:
Simulation einer rollenden Billardkugel.
Nunja, eine rollende Kugel und ein rollender Ball sind schon ziemlich das selbe.
Und Billard ist nicht Snooker, aber das ist Nebensache

air
Ingo Bürk
Es nimmt der Augenblick, was Jahre geben.

Johann Wolfgang von Goethe
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

Re: [erledigt] Ball rollt und hält nicht an - Reibung

  Alt 28. Feb 2006, 23:50
Ächtz. Wer kennt schon Snooker? Und ob nun eine Billardkugel rollt oder ein Snookerball, ist für das Problem absolut unerheblich. Eine Bild rollende Billardkugel ist aber wesentlich vertrauter. So, jetzt aber genug Offtopic.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:09 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