Koordinaten abfahren. Wann bin ich wo?

String

Erfahrenes Mitglied
Huhu zusammen,

ich will meinen Benutzern eine Übersichtskarte anbieten, auf der Sie angeben können, wie Sie diese abfahren werden.

Also nehmen wir an Benutzer A meldet sich an und steht automatisch auf 0/0.

Jetzt klickt dieser auf 5/4, danach auf 3/2.
In der DB ist gespeichert, wie schnell der User ist.

Zusätzlich wollte ich jetzt in der "Wege-Tabelle" die Einträge speichern, wann der User wo sein wird.
Also von 0/0 auf 5/4 braucht er beispielsweise 5 Minuten. Also speichere ich in der Datenbank:
User1 ist auf 5/4 in JETZT+5Minuten.

Soweit kein Problem.
Jetzt geht der User nach 3 Minuten aber hin und denkt sich: AAAHHH, Mist ich fahre anders.
Löscht also seine Wegpunkte und klickt eine andere Punkte an.

Doch.. woher weiß ich wo der User eigentlich nach 3 Minuten war?
Von der Darstellung ganz zu schweigen. Auf der Übersichtskarte würden alle User nur von A nach B springen, denn dazwischen werden keine Koordinaten gespeichert..

Habt ihr da Ideen wie das zu Lösen ist?
Gibt es in PHP funktionen für sowas? (Wäre ja zu schön :D)
Vielleicht fehlt mir auch nur die Bezeichnung, also der Namen für die Mathematische-Funktion..

Danke für eure Vorschläge :)

paD
 
user_id, start_koords, ziel_koords, start_zeit, schnelligkeit

Damit haste doch alles? (als tabellen spalten jetzt gedacht)
 
Huhu,

ja okay.. nun habe ich alles. Aber ich weiß immer noch nicht, wo der User nach 3 Minuten ist. Und es auf der Karte anzeigen, kann ich erst recht nicht.

Wie gesagt, wahrscheinlich fehlt mir nur der Name für die Mathematische Funktion, mit der ich errechnen kann, wann ein User auf welcher Position ist.. :/

paD
 
Wenn du keine vordefinierten Wege, sondern den direkten Weg (Gerade) benutzt, geht das so:

PHP:
function getUserPosition($startX, $startY, $endX, $endY, $velocity, $time){
  $dX = $endX - $startX;
  $dY  = $endY - $startY;
  $totalDistance = sqrt( $dX*$dX + $dY*$dY ); // Pythagoras
  $curDistance = $velocity*$time / $totalDistance; // Gefahrene Strecke in Prozent
  if( $curDistance >= 1 ) // User ist schon angekommen (oder rechnerisch darüber hinaus)
    return array($endX, $endY);
  else
    return array($startX + $curDistance * $dX, $startY + $curDistance * $dY);
}

edit:
Hier ein paar Testausgaben:
Code:
var_export(getUserPosition(0, 0, 10, 0, 1, 5)); echo '<br />';
var_export(getUserPosition(0, 0, 0, 15, 2, 5)); echo '<br />';
var_export(getUserPosition(0, 0, 10, 10, 1, 10)); echo '<br />';
var_export(getUserPosition(20, 30, 0, 0, 3, 10)); echo '<br />';
var_export(getUserPosition(0, 0, 20, 20, 1, 100)); echo '<br />';

array ( 0 => 5, 1 => 0)
array ( 0 => 0, 1 => 10)
array ( 0 => 7.0710678118655, 1 => 7.0710678118655)
array ( 0 => 3.3589941132431, 1 => 5.0384911698647)
array ( 0 => 20, 1 => 20)
 
Zuletzt bearbeitet:
Achja.. schau an.. Wieder ein Brett vorm Kopf gehabt.
Wenn ich die Zeit die man braucht mit speichere, kann ich ja Prozentual errechnen, wie weit ich bin.. -.-

Danke! :)

paD
 

Neue Beiträge

Zurück