authentische beschleunigung?!

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

 

CO2

ehemals "SirMO"

Betreff: authentische beschleunigung?!

BeitragFr, Dez 10, 2010 22:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
Ich beschäfte mich (wie man vielleicht an meinen anderen posts gemerkt hat) ein wenig mit 3D. Nun hab ich folgendes Problem: Ich möchte ein Auto authentisch beschleunigen, d.h., dass es - je schneller es wird, es langsamer beschleunigt. Dazu hab ich folgende Variablen:

Code: [AUSKLAPPEN]
speed = 0 ;Anfangswert
accrelation = 1.2 ;Beschleunigung


jetzt muss eine Formel her. dazu hab ich mir auch gedanken gemacht:

Formel Nr.1:
Code: [AUSKLAPPEN]
speed = (speed + accrelation)


(Das sieht leider nicht sehr authentisch aus...)

Formel Nr. 2:
Code: [AUSKLAPPEN]
speed = speed + (speed * accrelation)


(da passiert gar nichts (ist ja auch klar, weil speed den grundwert 0 hat))

und momentan zermürbe ich mir den kopf um endlich die richtige Formel zu finden, hoffe ihr könnt mir helfen,

mfG,
CO2
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

Xeres

Moderator

BeitragFr, Dez 10, 2010 22:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Suche mal nach Luftwiderstand. Der wird um so größer, je höher die Geschwindigkeit des Fahrzeugs wird.
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
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Hubsi

BeitragFr, Dez 10, 2010 22:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Du verringerst accrelation solange der Spieler "Gas" gibt um... weiß nicht... 5%, bis das Auto den maximalen Speed hat. Dürfte eine schöne "Beschleunigungskurve" ergeben.
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

CO2

ehemals "SirMO"

BeitragFr, Dez 10, 2010 22:19
Antworten mit Zitat
Benutzer-Profile anzeigen
@ Xeres:
mit luftwiderstand hab ich auch schon gerechnet, konnte aber ebenfalls keine gescheite formel hinkiregen (irgendwas mit ^4, oder so war das)

@ Hubsi:
Formel wäre dann
Code: [AUSKLAPPEN]
speed = speed + (accrelation - (accrelation / 100 * speed))

oder was?
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

Hubsi

BeitragFr, Dez 10, 2010 22:21
Antworten mit Zitat
Benutzer-Profile anzeigen
accrelation=accrelation*0.95 bei 5%. Den Prozentsatz mußt Du halt auf Dein Spiel so anpassen das er beim erreichen der max. Geschwindigkeit nicht abrupt nicht schneller wird.
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

CO2

ehemals "SirMO"

BeitragFr, Dez 10, 2010 22:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie meinst du das?

habs jetzt wie folgt gelöst:
Code: [AUSKLAPPEN]
accrelation = accrelation * 0.95
speed = speed + accrelation


aber da ändert sich nichts an der beschleunigung Sad
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

Hubsi

BeitragFr, Dez 10, 2010 22:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist accrelation als Float definiert?
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

CO2

ehemals "SirMO"

BeitragFr, Dez 10, 2010 22:32
Antworten mit Zitat
Benutzer-Profile anzeigen
da lag einer fehler Very Happy besten dank

Aber trotzdem mach ich noch irgendwas falsch:
Code: [AUSKLAPPEN]
accrelation = accrelation * 0.95
      
speed = speed + accrelation


maximal-geschwindigkeit: 17km/h

(sorry wenn ich nerve, bin heut irgendwie nicht voll aufm dampfer Wink )
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

Hubsi

BeitragFr, Dez 10, 2010 22:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Du willst eine maximale Geschwindigkeit von 17 km/h oder erreichst nicht mehr als 17 km/h?
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

CO2

ehemals "SirMO"

BeitragFr, Dez 10, 2010 22:37
Antworten mit Zitat
Benutzer-Profile anzeigen
es sollen maximal 250 km/h erreicht werden, aber ab 17km/h gehts nicht weiter (zumindest so langsam, das nichts passiert)
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

Hubsi

BeitragFr, Dez 10, 2010 22:41
Antworten mit Zitat
Benutzer-Profile anzeigen
2 Möglichkeiten: Entweder die Beschleunigung zu Beginn höher ansetzen oder einen geringeren Prozentsatz beim abnehmen der Beschleunigung wählen. Oder beides. Was halt zum Spiel passt.
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

mpmxyz

BeitragFr, Dez 10, 2010 22:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Nimm diese Formel:
Code: [AUSKLAPPEN]
speed=speed+acceleration*(1.0-speed/maxspeed)

Je größer "acceleration" ist, desto schneller erreicht das Auto seine Maximalgeschwindigkeit.
Wenn die Geschwindigkeit maximal ist, ist der Faktor (1.0-speed/maxspeed) gleich 0; die Geschwindigkeit ändert sich dann also nicht.
Verschiedene Gänge kann man mit verschiedenen acceleration/maxspeed-Kombinationen erreichen.
mfG
mpmxyz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer
 

CO2

ehemals "SirMO"

BeitragFr, Dez 10, 2010 23:08
Antworten mit Zitat
Benutzer-Profile anzeigen
wofür steht denn die 1.0?
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti
 

mDave

BeitragFr, Dez 10, 2010 23:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Nah, wenn speed=maxspeed ist, ergibt speed/maxspeed=1.
Und dann 1-1 ist auch wieder 0.
Und damit wird ja dann die Geschwindigkeit malgenommen.
Also gibt es ab da keinen Geschwindigkeitszuwachs mehr.

BladeRunner

Moderator

BeitragSa, Dez 11, 2010 10:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Es mag kleinkariert erscheinen, aber ich empfehle dir ein wenig mehr auf die Benennung deiner Variablen zu achten. 'acceleration', nicht 'accrelation'.
Ansonsten gibt es im Buchhandel deiner Wahl lustige kleine Formelsammlungen zu allen Bereichen der Physik, die helfen gerne mal weiter. Ich persönlich benutze da ein Pocketbook von Langenscheidt für 2€. Hat mir mehr als einmal den Hintern gerettet.
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
 

CO2

ehemals "SirMO"

BeitragSa, Dez 11, 2010 12:46
Antworten mit Zitat
Benutzer-Profile anzeigen
ok, werd mich mal danach umschauen, danke
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

hazumu-kun

BeitragSa, Dez 11, 2010 13:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Allgemein zur Beschleunigung:

a: Beschleunigung (in m/s², Meter pro Quadratsekunde)
v: gefahrene Geschwindigkeit (in m/s, Meter pro Sekunde)
v0: Geschwindigkeit vor dem Beschleunigen
t: vergangene Zeit seit Start des Beschleunigen (in Sekunden)

v= a*t

Falls bei laufender Fahrt ein Beschleunigungsvorgang beginnt:
v= v0 + a*t

Wie du die Beschleunigung jetzt in deinem Code abnehmen lässt (Natürlich in Abhängigkeit von Geschwindigkeit, eingelegtem Gang, usw.) sei dir überlassen.
Warum kann es keine omnipotente Macht geben?
Weil diese omnipotente Macht in der Lage sein müsste, einen so schweren Stein zu schaffen, dass sie ihn nicht heben kann
-> nicht omnipotent

TimBo

BeitragSa, Dez 11, 2010 13:49
Antworten mit Zitat
Benutzer-Profile anzeigen
s = 0.5 * a * t^2
v = a * t

a = beschleunigung [m/s^2) = const
t = Zeit [s]
v = Speed [m/s]
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.
 

CO2

ehemals "SirMO"

BeitragSa, Dez 11, 2010 14:02
Antworten mit Zitat
Benutzer-Profile anzeigen
ok, besten dank
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

Eingeproggt

BeitragSa, Dez 11, 2010 14:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn ich nicht ganz grob daneben lieg sind die letzten beiden Beiträge zur Beschleunigung ziemlich überflüssig. Weil wie Beschleunigung funktioniert ist doch im ersten Beitrag bereits klar gewesen. Es ging um die "Abriegelung", also Einbindung einer Maximalgeschwindigkeit.
Die physikalische Beschleunigung geht ja mehr oder weniger ins unendliche (und ist allein deshalb schon "falsch" weil man seit Einstein weiß, dass man keinen Körper der auch nur die geringste Masse besitzt, auf Lichtgeschwindigkeit beschleunigen kann Wink )
Die Maximalgeschwindigkeit eines Fahrzeuges kommt ja eigentlich von der maximalen Drehzahl des Motors und des Übersetzungsverhältnisses des höchsten Ganges (und in weiterer Folge auch des Luftwiderstandes wie anfangs erwähnt. Weiters dann noch innere Reibung etc. usw. ^^). Aber mal genug klug-geschissen, hier im Thread gibts ja bereits brauchbare Lösungen von Hubsi und mpmxyz (Letztere finde cih am besten).

mfG, Christoph.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group