Komplizierte Mysql abfrage
Verfasst: 20.04.2012 02:26
Moin ich war lange nicht mehr hier
Ich stehe gerade vor einem Problem besser gesagt vor einem Schönheitsfehler.
Ich habe eine Map 10 x 10 Km groß auf der befinden sich Gegner + mein Spielecharakter.
Die Gegener befinden sich in einer Mysql Datenbank und haben eindeutige Coordinaten auf denen diese sich befinden.
Jetzt möchte ich beim erstellen der Weltkarte nur den jeweiligen Teil von 512 x 512 pixel anzeigen und um die Datenbank zu schonen nur alle Gegner auslesen und anzeigen die sich im Umkreis von 1Km befinden.
Das mache ich ganz einfach in dem ich mit meinen Char Position +- 1Km ermittle und via BETWEEN ermittle.
Das problem ist das dass Ergebniss ja nicht die perfekte Distanz von Char ist sondern nur eine Quadrat um den Char herum der an den ecken zum beispiel viel höher als 1 km liegt.
Ohne lang darüber nachzudenken ist mir bewusst das so eine DB Abfrage evt. sehr lang und komplex werden könnte wenn ich zu gemüte ziehe wie ich schon die Distanznzeige berechne:
Jetzt meine Frage an die MySql Spezialisten: Gibt es eine Möglichkeit eine DB abfrage so zu erstellen das ich einen Kreisrunden Sichtradius um meinen Char herum bekomme ohne eine eigens entwickeltes Framework für MySQL zu entwickeln was für diese Aufgabe ausgelegt ist oder soll ich lieber die einfache Variante nehmen? 
EDIT: es ist verhext aber immer wenn ich hier was poste komme ich nach abschicken selbst auf die Lösung
Ich denke ich lese das ganze mit Between aus und bessere anhand der javascript Lösung der Distanz dann einfach in php das ganze aus so sollte ich nen Kreisrunden radius bekommen.
Wer dennoch ne bessere möglichkeit findet kann das gern posten

Ich stehe gerade vor einem Problem besser gesagt vor einem Schönheitsfehler.
Ich habe eine Map 10 x 10 Km groß auf der befinden sich Gegner + mein Spielecharakter.
Die Gegener befinden sich in einer Mysql Datenbank und haben eindeutige Coordinaten auf denen diese sich befinden.
Jetzt möchte ich beim erstellen der Weltkarte nur den jeweiligen Teil von 512 x 512 pixel anzeigen und um die Datenbank zu schonen nur alle Gegner auslesen und anzeigen die sich im Umkreis von 1Km befinden.
Das mache ich ganz einfach in dem ich mit meinen Char Position +- 1Km ermittle und via BETWEEN ermittle.
Das problem ist das dass Ergebniss ja nicht die perfekte Distanz von Char ist sondern nur eine Quadrat um den Char herum der an den ecken zum beispiel viel höher als 1 km liegt.
Ohne lang darüber nachzudenken ist mir bewusst das so eine DB Abfrage evt. sehr lang und komplex werden könnte wenn ich zu gemüte ziehe wie ich schon die Distanznzeige berechne:
Code: Alles auswählen
distance = Math.floor(Math.sqrt(Math.pow(mapx - playerx, 2) + Math.pow(mapy - playery, 2)));

EDIT: es ist verhext aber immer wenn ich hier was poste komme ich nach abschicken selbst auf die Lösung
Ich denke ich lese das ganze mit Between aus und bessere anhand der javascript Lösung der Distanz dann einfach in php das ganze aus so sollte ich nen Kreisrunden radius bekommen.
Wer dennoch ne bessere möglichkeit findet kann das gern posten
