Karte: die Welt ist doppelt so breit wie mapSize
Die Parzellen lagen im Wald. Ich hatte -mapSize/2 bis +mapSize/2 angenommen — naheliegend beim Namen, aber falsch: die Koordinaten laufen von -mapSize bis +mapSize. Damit wurde jede Parzelle um Faktor zwei vom Mittelpunkt weggezogen. Schlimmer als der Fehler war meine Pruefung. Der Zonentest hat die Koordinaten auf ihre eigene Bounding-Box normiert und danach geschaut, ob die Felder in der richtigen Ecke liegen. Das besteht bei JEDEM Massstab, weil die Anordnung zueinander ja stimmt. 14 von 15 Treffern klangen ueberzeugend und sagten ueber den Massstab genau nichts aus. Gemessen wurde es dann so: die eingebrannte Legende steht sowohl im Feed-Bild als auch im Ingame-Screenshot, damit laesst sich der eine aufs andere umrechnen. Vier Parzellen an den vier Ecken ergaben eine Weltbreite von 7822 bei mapSize 4096 — Faktor 1,91 bei rund 5 Prozent Ablesegenauigkeit. Dabei ist noch etwas herausgekommen: die Marken H1..H8 auf dem Luftbild sind als Passpunkte hervorragend, nicht wertlos, wie ich in der Doku behauptet hatte. Mit richtigem Massstab liegen alle acht Hofparzellen unter 13 px von ihrer Marke; mit falschem rund 200. Das ist jetzt der Test — acht Passpunkte, die jede kuenftige Verschiebung sofort auffliegen lassen, statt eines Zonenvergleichs, der alles durchwinkt. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+16
-4
@@ -161,12 +161,24 @@ export const hofFarbe = (hof) => HOF_FARBEN[(hof - 1) % HOF_FARBEN.length];
|
||||
const esc = (s) => String(s).replace(/[<>&"']/g, (c) =>
|
||||
({ '<': '<', '>': '>', '&': '&', '"': '"', "'": ''' }[c]));
|
||||
|
||||
/**
|
||||
* Wie breit ist die Welt auf dem Luftbild?
|
||||
*
|
||||
* Nicht `mapSize`, sondern das Doppelte: die Koordinaten laufen von -mapSize
|
||||
* bis +mapSize. Gemessen, nicht geraten — vier Parzellen an den vier Ecken
|
||||
* gegen die Ingame-Karte gerechnet ergaben 7822 bei mapSize 4096, also
|
||||
* Faktor 1,91 bei einer Ablesegenauigkeit von rund 5 %.
|
||||
*
|
||||
* Wer -mapSize/2..+mapSize/2 annimmt, zieht alles um Faktor zwei vom
|
||||
* Mittelpunkt weg. Das sieht auf den ersten Blick plausibel aus, weil die
|
||||
* Anordnung zueinander stimmt — nur liegt dann jede Parzelle im Wald.
|
||||
*/
|
||||
export const WELT_FAKTOR = 2;
|
||||
|
||||
/**
|
||||
* Die Karte als SVG.
|
||||
*
|
||||
* Weltkoordinaten laufen von -groesse/2 bis +groesse/2; x nach rechts, z nach
|
||||
* unten, linear über das ganze Luftbild. Das ist gegen die Ingame-Karte
|
||||
* geprüft: 14 von 15 markanten Feldnummern landen in der richtigen Zone.
|
||||
* x nach rechts, z nach unten, linear über das ganze Luftbild.
|
||||
*
|
||||
* @param {object} stand Ergebnis von statsLesen()
|
||||
* @param {string} bildB64 Luftbild vom Server als base64-JPEG
|
||||
@@ -174,7 +186,7 @@ const esc = (s) => String(s).replace(/[<>&"']/g, (c) =>
|
||||
* @param {Record<number,string>} namen Hof-Nummer → Anzeigename
|
||||
*/
|
||||
export function karteSvg(stand, bildB64, S = 1024, namen = {}) {
|
||||
const G = stand.groesse;
|
||||
const G = stand.groesse * WELT_FAKTOR;
|
||||
const px = (w) => ((w + G / 2) / G) * S;
|
||||
const teile = [];
|
||||
|
||||
|
||||
Reference in New Issue
Block a user