Menu

#48 Astralraum: Mehrere Reports

open
CR-Support (8)
6
2007-03-05
2007-01-24
Anonymous
No

Ich habe probleme bei mergen mehrerer Reports. Der Astralraum der unterschiedlichen Völker scheint da nicht wirklich korrekt zugeordnet zu werden. Teilweise sind in den Nebelregionen jetzt die Schemen aus unterschiedlichen Astralraumregionen in einer Region gemixt. Teils auch doppelt etc.

Vielleicht sollte aus den Schemen die Zuordnug hergestellt werden, die ist ja doch eher statisch.

Man könnte die Astralraumregion quasi nach den ersten beiden Schemen benennen und dann das Mapping ähnlich wie im Realraum vornehmen. Zwei Schemen identifizieren eine Astralraumregion eindeutig! Falls mehr Infos zum Astralraummapping benötigt werden, einfach mal bei mir nachfragen:

eressea #at# duckstein # net

Grüsse

Ralf

Discussion

  • stm

    stm - 2007-02-01

    Logged In: YES
    user_id=1283754
    Originator: NO

    Das wird schon jetzt so gemacht. Nur ist es nicht ganz einfach, weil es häufig Reporte gibt, in denen nur Astralraumregionen ohne Schemen vorkommen. Man sollte vielleicht bei Problemen von Hand den Ursprung setzen können. Ich hatte schon lange mal vor das zu machen, aber vielleicht ist das eher was für die übernächste Version.

     
  • Nobody/Anonymous

    Logged In: NO

    Naja vielleicht sollte ich mal die 3 Report die ich merge als Beispiel schicken, da sind eindeutig Schemen drin und trozdem findet Magellan keine Zusammenhänge. Im Zweifelsfall würde ich beim mergen lieber eine neue (Astral)Ebene einfügen. Dann wie du vorschlägst per Hand eine Zuordnung erlauben, also Ursprung in 2 Ebenen gleich setzen und dann Ebenen mergen.

    Was den Astralraum angeht schaue ich aber nochmal, ob ich nicht noch andere Lösungen finde. Man kann ja auch ein Mapping über den Realraum durchführen, selbst wenn sich der Astralraum nicht überdeckt. Ist aber halt an gewisse Bedingungen gebunden, die man prüfen müsste. Generell braucht es meist ein paar Astralregionen mit Schemen um das Mapping 100%ig zu machen.

    Könnt ihr mir einen Tip geben wo ich im Quellcode suchen muss?

    Grüsse

    Ralf

     
  • darcduck

    darcduck - 2007-02-08

    Logged In: YES
    user_id=1714005
    Originator: NO

    Habe das Problem in ReportMerger lokalisiert und auch nachvollzogen was bei den 3 Reports passiert.

    3 Reports von 3 Völkern aus der gleichen Runde. A und B überlappen sich im Astralraum und B und C überlappen sich im Astralraum. Ich beginne mit Region A (meiner) und füge dann B, C und weitere auf einmal hinzu. Offenbar werden die Astalräume in der Reihenfolge A->C->B zusammengefügt und damit entstehen dann die Fehler, da keine gleichen Schemen gefunden werden.

    2 Lösungsmöglichkeiten:
    - Die Astralräume in unterschiedlichen Reihenfolgen losgelöst vom Realraum versuchen zu mergen. Hilft aber nur in oben beschriebenen Sonderfall.

    - Astralraummapping über den Realraum durchführen. Das ist etwas komplizierter und erfordert genaue Kenntnisse der Astralraumgeographie:

    Aus dem Astralraum können Regionen im Radius 2 (also wie 10er Leuchtturm) gesehen werden. Die 6 Eckregionen werden dabei von den jeweils benachbarten Regionen gesehen. Wichtig ist herauszubekommen "über" welchen Regionen die Astralraumregionen liegen. Das lässt sich über die Koordinaten aller Schemen eines Report erledigen. Hat man den Astralraum dann fest an den Realraum gebunden, kann man prima über den verbundenen Realraum zwei Astralrauminseln verbinden. Ich versuche die Tage mal einen Algorithmus zu entwickeln ...

    Grüsse

    Ralf

    PS: Endlich angemeldet :-)

     
  • darcduck

    darcduck - 2007-02-08

    Logged In: YES
    user_id=1714005
    Originator: NO

    Ok, das ging einfacher als gedacht (der grobe Algorithmus):

    Report = r
    r.a = astralrerionen
    AstralRegion = a
    a.x=X koordinate der Astralregiion
    ...
    a.s=schemen der Astralregion

    Schemen = s
    s.x=X Koordinate der Schemen

    minx=9999, maxx=-9999, miny= ...
    foreach r.a as a
    {
    foreach a.s as s
    {
    x=s.x-4*a.x
    y=s.y-4*a.y
    minx=min(minx,x)
    maxx=max(maxx,x)
    ...

    if (maxx-minx)==4 && (maxy-miny)==4 break /* beide schleifen, wir haben nämlich alles was wir wissen wollen rausgefunden */

    maxx-2,maxy-2 -> die Region in der Realwelt die das Zentrum der Astralraumregion 0,0 repräsentiert.

    Das gleiche machen wir auch für den 2. Report.

    Das Delta der Regionen im Realraum (unter beachtung der Koordinatenverschiebung im Realraum) jeweils durch 4 rechnen = delta im Astralraum = Koordinatenverschiebung im Astralraum.

    Alles klar?

     
  • darcduck

    darcduck - 2007-02-08

    Logged In: YES
    user_id=1714005
    Originator: NO

    Zu den beiden Varianten
    a) gleiche Schemen suchen (implementiert)
    b) Zentralregion aus Ausdehnung ermitteln (vorgeschlagen, noch verbesserbar)

    gibt es sogar noch eine dritte!

    c) Zentralregion aus Schemenüberlappung ermitteln

    Dabei macht man sich zu nutze das 2 benachbarte Astraregionen 0-1 Schemenregion gemeinsam haben (0 wenn an der stelle der Überlappung Ozean ist -> keine Schemen). Sowie man in 2 verschiedenen Astraregionen im gleichen Report die gleichen Schemen einer Region im Realraum erkennt (gleiche Koordinaten), ist die Verbindung zwischen Astral- und Realraum auch hergestellt. Dann kann die Verbindung der Astralrauminseln wieder über den Realraum hergestellt werden.

    a1 = Astralregion
    a2 = benachbarte Astralregion
    s = Schemen einer region in beiden Astralregionen

    Zentralregionkoordinaten unter a1:
    x = s.x + 2*(a1.x - a2.x)
    y = s.y + 2*(a1.y - a2.y)

    Oder die Zentralregion unter Astralregion[0,0]:
    x = s.x + 2*(a1.x - a2.x) - 4*a1.x = s.x - 2*a1.x - 2*a2.x
    y = s.y + 2*(a1.y - a2.y) - 4*a1.y = s.x - 2*a1.y - 2*a2.y

    Damit stehen dann 3 Varianten zur Verfügung ein Mapping durchzuführen, womit die Chance recht gross sein dürfte, das mindestens einer der Varianten passt, wobei sich b) und c) sogar kombinieren lassen. Schwer ist ein Mapping immer dann, wenn vielleicht nur eine oder Astralregionen im Report sind, oder über sehr wenige Schemen verfügen.

    Vielleicht sollte man den Bug hier auf Private setzen, da doch aus dem Text und den Formeln recht viel über den Astralraum verraten wird.

    Jetzt ist aber genug!

    Grüsse

    Ralf

     
  • Alexander Fietz

    Alexander Fietz - 2007-03-05

    Logged In: YES
    user_id=26454
    Originator: NO

    Hallo Ralf,

    jetzt erst lese ich Deine ausführlichsten Kommentare.
    "privat" geht nicht, da stm z.B. kein projektmember ist (wir sind hier bei eressea, nicht bei magellan..;-))

    Und jetzt schau ich mir mal die uns zugesannten files an und wenn ich es halbwegs begreife, wirds zum testen eingebaut.

    Vielen Dank!
    Fiete

     
  • Alexander Fietz

    Alexander Fietz - 2007-03-05
    • labels: --> CR-Support
    • priority: 5 --> 6
    • assigned_to: nobody --> fiete
     

Log in to post a comment.

MongoDB Logo MongoDB