Witam, od dwóch tygodni męczę się z pewnym problemem, mianowicie chcę za symulować ruch obiektu...
Wypuszczony obiekt jak kula do kręgli czy cokolwiek co się samo nie napędza, ma spadek prędkości oraz inne cechy.
Chcę za symulować spadek prędkości na 1ms, żeby w dowolnym momencie symulacji znać położenie obiektu, dane pobieram za pomocą stopera.
Dana są nastepujące(jednostki są wirtualne):
Prędkość początkowa: 108.029
Prędkość końcowa: 75.5102
Spadek prędkości: 0.0331826 (Na 1ms)
Czas ruchu: 980Ms
Pokonany dystans (To był obiekt na torze, 1 pętla) 74000
I teraz zaczyna się kompletny bałagan, od dawna widziałem że coś jest nie tak, napisałem prosty program żeby to sprawdzić i co się okazuje, że owszem czas ruchu jest równy 980, a prędkość 75.5102 od 108.029 przy spadku prędkości 0.0331826/Ms, jest osiągana od w 980Ms, tylko że pokonany dystans wynosi 89950 z kawałkiem zamiast 74000.
Nie mam bladego pojęcia jak za symulować ruch obiektu, aby otrzymać nawet podobne dane, do tego co oczekuję.
Tutaj macie sam program do testu, program w którym pobieram dane i robię symulację, nie będę wklejać, gdyż ma on więcej niż kilka tysięcy linii kodu, i robi różne rzeczy, więc nie ma to sensu. Same obliczenia zdają się niepoprawne.
Pisałem to w QT c++, ale można to spokojnie przerobić na cout i wypisać dane.
Dane spadku prędkości pobierałem wzorem prędkość_początkowa - prędkość_końcowa / czas_ruchu.
Konieczni jest mi potrzebna pomoc, jestem w stanie nawet zapłacić, jest mi to potrzebne.
Ma ktoś może jakiś pomysł jak to wykonać? Myślałem, żeby dać to do działu fizyka/matematyka/logika, ale jednak dałem to tutaj.
#include <QCoreApplication>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
double distance = 0;
double speed = 108.029;
double target_speed = 75.5102;
double deceleration = -0.0331826;
int time = 0;
while(speed > target_speed)
{
distance += speed;
speed += deceleration;
time++;
}
qDebug() << "Time: " << time;
qDebug() << "Distance: " << distance;
return a.exec();
}