suche vorschrift |
17.01.2005, 23:11 | nullLF | Auf diesen Beitrag antworten » |
suche vorschrift ich suche eine zuordnungsvorschrift mit der ich aus den koordinaten eines punktes eine art ID gewinnen kann... diese ID ist eineindeutig, das heisst jeder punkt hat genau eine ID.. sortiere ich dann die IDs auf- oder absteigend, dann sind diejenigen, deren punkte weiter voneinander entfernt lagen auch in dieser sortierten liste weiter voneinander entfernt.. die abstände zwischen den IDs müssen nicht exakt die abstände der punkte wiederspiegeln, nur die sortierung sollte fehlerfrei möglich sein.. ich hab mir mal folgenden ansatz überlegt... ein punkt [x:y] wird so in eine ID umgewandelt: x = ab [a udn b sind ziffern!] y = cd id = acbd z.b. Punkte: [x:y] ==> und die ID dazu 12:34 ==> 1324 12:35 ==> 1325 14:32 ==> 1342 16:34 ==> 1364 12:30 ==> 1320 das von mir erdachte system hat leider noch nicht den gewünschten effekt... hat vielleicht jemand eine idee? |
||
17.01.2005, 23:33 | Tobias | Auf diesen Beitrag antworten » |
Deine Idee mit den Abständen ist nicht sehr praktikabel, da ein Abstand immer zwischen zwei Punkten definiert ist. Da du aber die ID aus einer Koordinate berechnen willst, wird der "Abstand" nicht in die Berechnung einfließen. Mein Vorschlag wäre, die Koordinaten nach dem Abstand zum Urspruch zu ordnen. Dafür nimmt man die euklidische Distanz zum Ursprung. Da diese auch rationale Zahlen erzeugt, muss das ganze noch gerundet werden. Hieraus sind jetzt die Koordinaten an sich nicht zu entnehmen, deshalb ist die ID noch nicht vollständig. Die trivialste Lösung wäre, nun einfach die Koordinaten noch dranzuhängen. Hierfür musst du allerdings die maximale Stellenzahl pro Koordinatenkomponente wissen, weil sonst die Entfernungsordnung wieder zerstört wird. Nehmen wir an, eine Koordinate besteht aus zweistelligen Komponenten [xx : yy]. [12:34] hätte dann die ID: ==> 361234 Natürlich ist hier nur der Abstand zum Ursprung (nicht der Punkte untereinander) relevant für die Ordnung. |
||
18.01.2005, 00:16 | Tolga | Auf diesen Beitrag antworten » |
Das wird mit einer einfachen mathematischen Funktion nicht gehen. Eine rekursive Lösung am PC wäre das eleganteste. Du musst zuerst einen Sortieralgorithmus deiner Wahl implementieren. Dann alle Abstände errechnen und dem sportieralgo übergeben, damit er diese in einem array sortiert Dann erledigt sich die sache mit der ID auch von selbst, da die Ordnung der Abstände durch die Indizes des arrays eindeutig gegeben sind. MfG. |
||
18.01.2005, 00:43 | Tobias | Auf diesen Beitrag antworten » |
Das funktioniert auch nicht. Man würde Paare sortieren, denn nur Paare von Punkten besitzen auch einen Abstand voneinander. Aus dieser Ordnung der Paare lässt sich jetzt keine Ordnung der Punkte in einer Liste erstellen. Mögliche wäre eine Matrix oder der Abstand zu einem Fixpunkt (z.B. Ursprung oder Schwerpunkt). |
||
18.01.2005, 00:53 | AD | Auf diesen Beitrag antworten » |
Die Idee von nullF ist schlicht nicht durchführbar, wie bereits mehrfach hier erkannt. Ich will nur noch an einem Beispiel die Unmöglichkeit des Ansinnens demonstrieren: Man betrachte ein regelmäßiges n-Eck A_1A_2...A_n, sagen wir ursprungzentriert. Dann müsste nach nullF's Vorstellungen einer totalen Ordnung entweder oder gelten - ich denke, ich kann hier aufhören... |
||
18.01.2005, 06:48 | Leopold | Auf diesen Beitrag antworten » |
@ nullLF Warum nimmst du nicht die Koordinaten selbst? Das ist doch schon eine Codierung von Punkten der euklidischen Ebene. Und dann die sogenannte lexikographische Anordnung: ein Punkt kommt vor einem anderen, wenn seine x-Koordinate kleiner ist als die x-Koordinate des anderen Punktes ist; sind beide x-Koordinaten gleich, kommt er vor dem anderen, wenn seine y-Koordinate kleiner als die des anderen ist. Anschaulich heißt das: Punkte weiter links im Koordinatensystem sind kleiner, und bei Punkten, die auf einer Parallelen zu y-Achse liegen, liegen die kleineren weiter unten. Beispiel: (-4,-2) < (-4,5) < (-4,19) < (-2,16) < (-2,59) < (13,-102) Natürlich hat diese Anordnung nicht den von dir gewünschten Effekt der "Abstandstreue". |
||
Anzeige | ||
|
||
18.01.2005, 08:20 | nullLF | Auf diesen Beitrag antworten » |
So, erstmal danke für die vielen antworten... was ich vielleicht vergessen habe zu erwähnen (besonders dann im hinblick auf das oben genannte regelmäßige n-eck) ist, dass meine punkte nur im ersten quadranten liegen.. (wobei es keinen wirklichen unterschied macht, wo das nun zentriert ist) d.h. die idee die euklidische distanz zum ursprung einzubauen ist schon mal eine idee... nur können natürlich punkte, die die gleiche euklidische distanz ziemlich weit auseinander liegen.... so alles in allem bestätigt ihr mich also in dem punkt, dass es wohl nicht wirklich geht.... das ganze in ein array packen wird nicht gehen, weil ich damit datensätze in einer mysql datenbank "sortieren" möchte... insbesondere geht es darum ein "fenster" auszuschneiden.. vielleicht dazu noch etwas mehr.. in besagter mysql-datenbank findet sich eine liste von punkten und weiterführenden daten.. diese punkte repräsentieren sternensysteme und sollen später auf einer karte dargestellt werden.. da der spieler nur über radar-geräte mit begrenzter reichweite verfügen soll, muss es mir möglich sein fenster von punkten aus der datenbank zu ermitteln, die der radar-reichweite (kreis um ein im Mittelpunkt liegendes schiff des spielers) möglichst nahe kommen.. einfach, weil ich nicht jedesmal tausende datensätze schaufeln will dabei ist es sehr praktisch, wenn ich EINE ID hätte... einen datentyp "Punkt" gibt es leider nicht.. aber man könnte sich so etwas bauen in dem man zwei spalten als eine ID betrachtet... das wird dann natürlich doof, weil ich diese Punkte noch an mehr stellen brauche.. z.B. um gebäude auf planeten zu stellen etc.... naja ich werde dann in richtung der zwei spalten arbeiten denke ich... danke für die antworten ps: @arthur: das mit der totalen ordnung gefällt mir... totale ordnung, totaler posts, totale vernichtung... *g* |
||
18.01.2005, 09:23 | nullLF | Auf diesen Beitrag antworten » |
wie sähe es denn mit anderen koordinatensystemen aus? z.b. polarkoordinaten? bei polarkoordinaten hätte ich ja den vorteil sowohl betrag als auch winkel erfasst zu haben.. d.h. ich könnte mit einer winkel- und betragstoleranz um einen mittelpunkt an mein ausschneideproblem herangehen, oder? die frage ist allerdings, ob sich das so ohne weiteres als ein zahlenwert codieren lässt.... [edit] oh, doppelpost... [/edit] |
|
Verwandte Themen
Die Beliebtesten » |
|
Die Größten » |
|
Die Neuesten » |
|