Beschleunigung eines Objekts
Übersicht

![]() |
GearTechDEehemals 'KillerJo96'Betreff: Beschleunigung eines Objekts |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo,
ich weiß, dieses Thema gibt´s schon zig mal aber irgendwie haben mir alle nicht weitergeholfen. In der Schule habe ich bei meinem Physiklehrer gelernt, dass ich die Geschwindigkeit eines z.B. Autos mit der Formel Geschwindigkeit = Beschleunigung * Zeit ausrechnet. Soweit hab ich das auch schon in mein Projekt eingebaut. Das Auto fängt langsam an zu beschleunigen und wird immer schneller. Mein Problem ist jetzt aber, dass das Auto immer schneller wird. Ich habe im Type eine maxspeed Variable gesetzt die auf 0.08 gesetzt wird. Mein Code bisher: BlitzBasic: [AUSKLAPPEN]
Ich habe schon probiert: BlitzBasic: [AUSKLAPPEN]
Warum funktioniert das nicht? Kann mir da einer helfen? Ausserdem möchte ich, dass wenn man Key_Up wieder los lässt, die Geschwindigkeit langsam wieder nach lässt. Das klappt irgendwie auch nicht. Ich glaube mit dem Select Case Befehl ist das auch nich so sinnvoll ich hab da keine Ahnung wie ich es sonst lösen sollte. Naja ich hofffe ihr könnt mir helfen Danke im Voraus ![]() |
||
Mit freundlichen Grüßen: GearTechDE |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das Problem ist, das Zeit schon abläuft, die musst du nicht wirklich noch rein rechnen.
Immer wenn die Schleife durchläuft, tickt die Zeit etwas weiter. Bei 60Hz halt 1/60 Sekunde ~16ms. Beschleunigung erhöht sich (z.B. Gravitation) um einen Wert B: Beschleunigung = Beschleunigung + B und die Beschleunigung erhöht die Geschwindigkeit: Geschwindigkeit = Geschwindigkeit + Beschleunigung Und die Zeit ist überall dabei, weil sie sowieso während des Programms läuft. |
||
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) |
![]() |
GearTechDEehemals 'KillerJo96' |
![]() Antworten mit Zitat ![]() |
---|---|---|
Öhh ja.. Ich probier das mal. Ich meld mich wieder. | ||
Mit freundlichen Grüßen: GearTechDE |
![]() |
PropellatorBetreff: Re: Beschleunigung eines Objekts |
![]() Antworten mit Zitat ![]() |
---|---|---|
Killerjo96 hat Folgendes geschrieben: Ich habe schon probiert: BlitzBasic: [AUSKLAPPEN]
Warum funktioniert das nicht? Kann mir da einer helfen? Ah, dieser Fehler unterlief mir auch schon, versuche doch mal BlitzBasic: [AUSKLAPPEN]
Ob das auch bei Floats gut funktioniert kann ich dir aber nicht sagen. |
||
Propellator - Alles andere ist irrelephant.
Elefanten sind die Könige der Antarktis. |
![]() |
GearTechDEehemals 'KillerJo96' |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: mp\beschleunigung = (mp\beschleunigung + 0.01) Mod mp\maxspeed
Nope, funktioniert leider nicht. Aber trotzdem danke. |
||
Mit freundlichen Grüßen: GearTechDE |
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Lass einfach die Zeit sein. MoveEntity![]() mfg ToeB |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
![]() |
Propellator |
![]() Antworten mit Zitat ![]() |
---|---|---|
@ToeB
Soweit ich es verstanden habe versucht er das ja auch. |
||
Propellator - Alles andere ist irrelephant.
Elefanten sind die Könige der Antarktis. |
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Toll !
Er soll es aber verstehen. |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
![]() |
GearTechDEehemals 'KillerJo96' |
![]() Antworten mit Zitat ![]() |
---|---|---|
Okey Leute habe es jetzt geschafft. Ich habe es zwar selber gelöst, aber genau so wie Toeb gesagt hat, ich habe die Zeit weggelassen. Ich kann jetzt per knopfdruck den speed erhöhen. Bei loslassen des knopfes geht der speed langsam wieder runter. und wenn er schneller runter soll einfach rückwärts fahren xD
Danke für die Hilfe |
||
Mit freundlichen Grüßen: GearTechDE |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Vorsicht: Besserwisserei:
Xeres:Zitat: ...
Beschleunigung erhöht sich (z.B. Gravitation) um einen Wert B: ... Beschleunigung = Beschleunigung + B und die Beschleunigung erhöht die Geschwindigkeit: Geschwindigkeit = Geschwindigkeit + Beschleunigung ... Das ist doch falsch, oder? Die Beschleunigung bleibt immer gleich. Bei Gravitation immer 10m/s^2 Die Geschwindigkeit erhöht sich laufend aufgrund der Beschleunigung: Speed = Beschleunigung * Sekunden Speed = 10m/s^2 * 1s = 10m/s Speed = 10m/s^2 * 2s = 20m/s Speed = 10m/s^2 * 3s = 30m/s ... Speed = 10m/s^2 * 10s = 100m/s Also genügt es zu der aktuellen Geschwindigkeit jedesmal fixen Wert dazuzuaddieren. Am Auto varriiert die Beschleunigung zwar, aber nur aufgrund unterschiedlichen Gasgebens. Also wird auch hier aus der Gaspedalstellung ein fixer Wert ermittelt und der wird nun laufend zur Speed addiert. Die Speed kann niemals mittels der Modulo-Funktion MOD() einen sinnvollen Wert ergeben. Es ist eher so, dass bei einer best. Geschwindigkeit keine weitere Addition mehr möglich ist. BlitzBasic: [AUSKLAPPEN] If Speed<240 Then In der Realität passiert folgendes: Der Widerstand der Reifen, der Luft, der Bauteile wird so groß, dass er die Beschleunigung auffrisst. In einem solchen Modell müsste keine IF-Abfrage erscheinen: BlitzBasic: [AUSKLAPPEN] Speed=Speed + Beschleunigung Außerdem würde jetzt das Auto nach dem Gas-wegnehmen auch noch automatsich langsamer, wie in der Realität. |
||
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe |
- Zuletzt bearbeitet von Midimaster am Mo, Okt 31, 2011 8:55, insgesamt 2-mal bearbeitet
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Woops ![]() Klar, stimmt so nicht. Keine Ahnung woher ich die Extra-Beschleunigung genommen habe. ![]() |
||
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) |
![]() |
Propellator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nun wird es aber Mechanisch hier!
Eigentlich müsste er doch gleich mit Kräften rechnen. Also, hier die Newtonschen Axiome: Newton hat Folgendes geschrieben: Ein Körper, auf den keine Kraft wirkt, behält Betrag und Richtung seiner Geschwindigkeit bei. D.h. die Geschwindigkeit (ein Vektor) v ist konstant, wenn der resultierende Kräftevektor 0 ist. Newton hat Folgendes geschrieben: Die Änderung des Bewegungszustands ist proportional zur wirkenden Kraft und erfolgt in der Richtung, in der die Kraft wirkt. d.h., der resultierende Kraftvektor Fres = m * a Wobei m die Masse ist und a der Beschleunigungsvektor. Newton hat Folgendes geschrieben: Wirkt ein Körper 1 auf einen Körper 2 mit der Kraft F21 ein, so wirkt stets der Körper 2 auf den Körper 1 mit einer gleich grossen, entgegengesetzt gerichteten Kraft F12 ein. So, dann hätten wir mal die 3 newtonsche Axiome. Also, eine der Kräfte ist die Gravitationskraft bzw. Gewichtskraft. Zitat: FG = mg m = Masse, g = Fallbeschleunigung, auf der Erde c.a. 9.81 m/s2 Dass das Auto nun nicht in den Boden sinkt, hängt mit der Normalkraft zusammen. Diese bewirkt nämlich, dass wenn eine Kraft senkrecht auf eine Oberfläche drückt, diese mit der gleichen Kraft zurückdrückt. Nun müssen wir natürlich die Kraft der Luftmasse berücksichtigen, welche das Auto vor sich herschiebt. Und wo diese Kraft denn angreift. Das finden wir am besten im Windkanal heraus! Natürlich müssen wir auch noch wissen mit wie viel Kraft sich das Auto fortbewegt, dann bräuchten wir auch noch eine Rollreibung und die Reibungszahl zwischen Gummireifen und Asphalt. Wohlbemerkt drückt die Rollreibung das Auto nach vorne, wenn es beschleunigt, und nach hinten, wenn es rollt. Beim Blockieren der Räder hätten wir dann auch noch eine Gleitreibung, dafür brauchen wir die Gleitreibungszahl, und beim Seitwärtsschlittern so alles miteinander. Und besonders wenn das auto die räder blockiert, und trotzdem angeschoben wird, dann bräuchten wir noch die Haftreibung. Wie du siehst ist eine realistische Fahrphysik sehr komplex, und so haben wir eigentlich nur Modellartig den Körper des Autos abgedeckt, ohne zu berücksichtigen dass da Federungen drin sind und dass es 4 Räder hat. Natürlich kannst du auch einfach die Beschleunigung irgendwie wählen, ich vermute das erzeugt schlussendlich ein besseres Resultat. MfG Propellator PS: Schlussendlich ist Newtons Modell ja sowieso fehlerbehaftet, habe ich gehört, Einstein sei da genauer. Aber irgendwo muss man ja mal eine Grenze ziehen ![]() |
||
Propellator - Alles andere ist irrelephant.
Elefanten sind die Könige der Antarktis. |
LordCoder |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Midimaster hat Folgendes geschrieben: Vorsicht: Besserwisserei:
Speed = Beschleunigung * Sekunden Speed = 10m/s^2 * 1s = 100m/s Speed = 10m/s^2 * 2s = 20m/s Speed = 10m/s^2 * 3s = 30m/s ... Speed = 10m/s^2 * 10s = 100m/s Oder wohl doch nicht Speed = 10m/s^2 * 1s = 100m/s nur so ein kleiner Vertippfehler |
||
3. Platz BCC #60 |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
*** EDIT ***
(alles zurücknehm und das Gegenteil behaupte...) @LordCoder und Halbleiter vielen Dank für den Hinweis, ich hab's gleich ausgebessert! |
||
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe |
- Zuletzt bearbeitet von Midimaster am Mo, Okt 31, 2011 8:58, insgesamt einmal bearbeitet
n-Halbleiter |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Midimaster, ich denke, LordCoder meinte, dass du einen Tippfehler gemacht hast. ![]() Die 10m/s² * 1s sind 10m/s, wie du ja gerade nochmal bewiesen hast; du schriebst allerdings 100m/s in deinem Post. |
||
mfg, Calvin
Maschine: Intel Core2 Duo E6750, 4GB DDR2-Ram, ATI Radeon HD4850, Win 7 x64 und Ubuntu 12.04 64-Bit Ploing! Blog "Die Seele einer jeden Ordnung ist ein großer Papierkorb." - Kurt Tucholsky (09.01.1890 - 21.12.1935) |
![]() |
darth |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo,
der Thread ist ja sowieso schon rechthaberisch geworden, von daher mische ich doch gerne mit. Code: [AUSKLAPPEN] s(t) = s0 + v0 * t + 1/2 * a * t^2
v(t) = d/dt s(t) = v0 + a * t ;< Diese Zeile braucht er (falls a nicht explizit von der Zeit abhängt btw) a(t) = d/dt v(t) = d^2/dt^2 s(t) = a ;Konstant, also a nicht explizit von der Zeit abhängig Natürlich kann er es auch mit Kräften lösen wenn er will, und sobald dann Code: [AUSKLAPPEN] F_Beschleunigung = F_Reibung
erfüllt wird, ist die Beschleunigung = 0 und er hat das Problem der unendlichen Beschleunigung nicht. (Reibungskräfte sind proportional zur Geschwindigkeit.) Er kann es auch über Verlet annähern wenn er will: Code: [AUSKLAPPEN] x(t+h) = 2 * x(t) - x(t-h) + F(x(t)) * h^2/m
Oder Velocity-Verlet.. Aber mal ganz ehrlich.. das ist doch alles unnötig und viel zu kompliziert ._. Es wäre viel einfacher, einfach bis zu einer gegebenen Maximalgeschwindigkeit zu beschleunigen und dann abzubrechen. Code: [AUSKLAPPEN] Const a# = 9.81 ;m/s^2
Const vMax# = 120 / 3.6 ;(km/h -> m/s) ... if( v < vMax) v = v + a else v = a endif ... Notfalls noch mit abs(), falls die Geschwindigkeit nach links oder rechts gehen soll. (Oder über Vektoren, dann kann er sich wegen ||v|| >= 0 auch den abs() sparen.) |
||
Diese Signatur ist leer. |
![]() |
GearTechDEehemals 'KillerJo96' |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wie auch immer... xD | ||
Mit freundlichen Grüßen: GearTechDE |
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bei einen rennspiel, sollte man wenn man nciht eine simulation machen will die Normalen mittelschulansätze vergessen.
Für eine Fahrzeugengine sollte man mit wirkenden kräften und trägheit arbeiten, sowie reibung,. Also, 4 Punkte brühren die Straße, jeder hat 1 gewicht. alle 4 können kräfte in eine andere Richtung wirken lassen. Die haftung am Grund beschreibt die möglichkeit die kraft in beschleunigung umzusetzen |
||
between angels and insects |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group