Hallo, ich habe Daten in einer .csv die eine Autofahrt beschreiben.
Das Auto startet bei der Postion (0,0)-> (x,y). Es bewegt sich nur in 2 Dimensionen.
Die .csv-Datei enthält zwei durch Kommas (,) getrennte Werte. Die Werte beinhalten:
-Die Beschleunigung des Autos in die Richtung in den es aktuell zeigt.
-Die Rotation in der sich das Auto aktuell befindet
Dabei rotiert das Auto immer am Anfang, dann beschleunigt es 1 sekunde, bleibt stehen
rotiert erneut und beschleunigt wieder. usw...
Ich muss nun die Maximale Distanz von der Startposition berechnen und den gesamten zurückgelegten Weg berechnen.
Allerdings erhalte ich in C wenn ich das Skript ausführe leicht andere Werte als Schlussendlich rauskommen müsste.
Kann sich jemand mal meine Schleife bzw. Algorithmus ansehen? Habe ich dort irgendwo einen Fehler
wie ich die zurückgelegte Strecke berechne?
Das Auto startet bei der Postion (0,0)-> (x,y). Es bewegt sich nur in 2 Dimensionen.
Die .csv-Datei enthält zwei durch Kommas (,) getrennte Werte. Die Werte beinhalten:
-Die Beschleunigung des Autos in die Richtung in den es aktuell zeigt.
-Die Rotation in der sich das Auto aktuell befindet
Dabei rotiert das Auto immer am Anfang, dann beschleunigt es 1 sekunde, bleibt stehen
rotiert erneut und beschleunigt wieder. usw...
Ich muss nun die Maximale Distanz von der Startposition berechnen und den gesamten zurückgelegten Weg berechnen.
Allerdings erhalte ich in C wenn ich das Skript ausführe leicht andere Werte als Schlussendlich rauskommen müsste.
Kann sich jemand mal meine Schleife bzw. Algorithmus ansehen? Habe ich dort irgendwo einen Fehler
wie ich die zurückgelegte Strecke berechne?
C:
while ((token = strtok_r(save, "\n", &save)))
{
char* token1;
char* save1 = token;
double acceleration = atof(strtok_r(save1, ",", &save1));
double rotation = atof(strtok_r(save1, ",", &save1));
direction += rotation;
double ax = acceleration * cos(direction);
double ay = acceleration * sin(direction);
double vx = v0x + ax;
double vy = v0y + ay;
double x = vx + (ax/2) + x0;
double y = vy + (ay/2) + y0;
fprintf(file, "%f,%f\n", x, y, direction);
double distance = sqrt(x*x + y*y);
if(distance > max_distance) max_distance = distance;
total_distance += sqrt((x-x0)*(x-x0) + (y-y0)*(y-y0));
if(sqrt(vx*vx + vy*vy) > max_speed) max_speed = sqrt(vx*vx + vy*vy);
v0x = vx;
v0y = vy;
x0 = x;
y0 = y;
}