docs: Downtown-Bezugspunkt statt Downtown-Kern, stimmige Koordinatenbeispiele
(−511, 254) ist der Bezugspunkt aus tools/extract/data/districts.json, der Mittelpunkt der westlichen Hochhäuser, und liegt in B9. Der höchste Turm, das Southeast Financial Center, steht in C12. Das Anzeigebeispiel x 412 / y 1830 liegt in F3, nicht in C10. Im Browser bei Task 4 der Minimap aufgefallen. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
2ece0decb6
commit
61ef30f081
4 files changed
+31
-22
No files matched your search
@@ -10,13 +10,15 @@
|
||||
|
||||
**Spec:** `docs/superpowers/specs/2026-09-13-minimap-design.md`
|
||||
|
||||
> **Korrektur nach Task 4 (Ruling M7):** `(−511, 254)` ist der Bezugspunkt „Downtown“ aus `tools/extract/data/districts.json` — der Mittelpunkt der westlichen Hochhäuser —, nicht der Hochhauskern selbst. Der höchste Turm, das Southeast Financial Center bei `(−461, −460)`, steht in C12. Wortlaut, zwei Testtitel und das Anzeigebeispiel `F3 · x 412 / y 1830` (vorher fälschlich mit C10) sind unten angepasst.
|
||||
|
||||
## Global Constraints
|
||||
|
||||
- three 0.184.0; **keine neue Laufzeit- oder Testabhängigkeit.** vitest läuft ohne DOM — alles, was ohne Browser getestet werden soll, gehört in reine Funktionen in `mapMath.js`; `map.js` wird im Browser geprüft.
|
||||
- Python-Bibliotheken: numpy, scipy, scikit-image, shapely, networkx, pillow, pytest.
|
||||
- **Niemals** `git add three-player-controller`, **niemals** `git add -A`. Das Submodul bleibt auf `ac39682`; `git status` zeigt es als geändert, das ist ein gewollter Zustand. Commits nur mit ausdrücklichen Pfaden: `git commit -m "…" -- <pfade>`.
|
||||
- **`tools/extract/run.py` wird nicht angefasst.** Eine parallele Sitzung arbeitet an der Pipeline. Die Kartendateien entstehen über `overview.py`.
|
||||
- Chunk-Namen: Spalte `A`–`L` aus `i` (West → Ost), Zeile `1`–`12` aus `j` (Nord → Süd). **A1 = `chunk_0_0` = Nordwest-Ecke.** C10 = `chunk_2_9`. Downtown-Kern Welt `(−511, 254)` = B9.
|
||||
- Chunk-Namen: Spalte `A`–`L` aus `i` (West → Ost), Zeile `1`–`12` aus `j` (Nord → Süd). **A1 = `chunk_0_0` = Nordwest-Ecke.** C10 = `chunk_2_9`. Downtown-Bezugspunkt aus `districts.json` Welt `(−511, 254)` = B9; höchster Turm, Southeast Financial Center `(−461, −460)` = C12.
|
||||
- Koordinaten: three `(x, z)` → Welt `(X = x, Y = −z)` → Kartenpixel `px = (X − x0) · scale`, `py = (y1 − Y) · scale`, mit `x0 = −1000`, `y1 = 2500`.
|
||||
- Ausschnitt: `SLICE = { x0: -1000, x1: 2000, y0: -500, y1: 2500 }`, Chunkgröße 250 m, 12 × 12 Chunks.
|
||||
- Kartendateien in `public/data/vice-a/`: `map.png` 3.000 × 3.000, `map-walkable.png` 750 × 750 (255 begehbar, 0 nicht), `map.json`. Vite liefert sie unter `./data/vice-a/` aus.
|
||||
@@ -93,10 +95,14 @@ describe("Chunk-Namen", () => {
|
||||
}
|
||||
});
|
||||
|
||||
it("verbindet den Namen mit der Lage: der Downtown-Kern liegt in B9", () => {
|
||||
it("verbindet den Namen mit der Lage: Downtown-Bezugspunkt in B9, höchster Turm in C12", () => {
|
||||
// (−511, 254) ist der Bezugspunkt "Downtown" aus tools/extract/data/districts.json, der Mittelpunkt
|
||||
// der westlichen Hochhäuser. Die Türme selbst stehen nördlich und südlich davon.
|
||||
const { i, j } = chunkForWorld(-511, 254);
|
||||
expect({ i, j }).toEqual({ i: 1, j: 8 });
|
||||
expect(chunkName(i, j)).toBe("B9");
|
||||
const tower = chunkForWorld(-461.31, -460.1); // Southeast Financial Center, 248 m
|
||||
expect(chunkName(tower.i, tower.j)).toBe("C12");
|
||||
});
|
||||
});
|
||||
```
|
||||
@@ -665,8 +671,9 @@ describe("Landeplatz", () => {
|
||||
});
|
||||
|
||||
describe("Chunk-Namen und Anzeige", () => {
|
||||
it("nennt am Kartenpunkt des Downtown-Kerns B9", () => {
|
||||
it("nennt am Downtown-Bezugspunkt B9 und am Southeast Financial Center C12", () => {
|
||||
expect(chunkNameAtMap(INFO, 489, 2246)).toBe("B9");
|
||||
expect(chunkNameAtMap(INFO, 538.69, 2960.1)).toBe("C12");
|
||||
});
|
||||
|
||||
it("liefert am östlichen Kartenrand keinen Namen mehr", () => {
|
||||
@@ -815,7 +822,7 @@ export function chunkNameAtMap(info, px, py) {
|
||||
return chunkName(i, j);
|
||||
}
|
||||
|
||||
/** Anzeige für die Stelle unter dem Mauszeiger, etwa "C10 · x 412 / y 1830". */
|
||||
/** Anzeige für die Stelle unter dem Mauszeiger, etwa "F3 · x 412 / y 1830". */
|
||||
export function hoverLabel(info, px, py) {
|
||||
const name = chunkNameAtMap(info, px, py);
|
||||
if (!name) return null;
|
||||
@@ -1294,7 +1301,7 @@ Expected: PASS, Ausgabe sauber. (Keine neuen Tests; die Suite belegt, dass nicht
|
||||
Dev-Server starten, Seite öffnen, jeweils mit Screenshot im Bericht:
|
||||
|
||||
1. **M** öffnet die Karte: ganzer Ausschnitt, Raster, Namen A1–L12, A1 oben links, gelber Pfeil, „Du bist in …" oben links. Die Namensnennung ist unten links weiterhin sichtbar.
|
||||
2. Zeiger über der Karte bewegen: unten rechts erscheint `Name · x … / y …`. Den Zeiger über den Downtown-Kern führen — dort muss `B9` stehen.
|
||||
2. Zeiger über der Karte bewegen: unten rechts erscheint `Name · x … / y …`. Den Zeiger über den Downtown-Bezugspunkt Welt `(−511, 254)` führen — dort muss `B9` stehen; über dem Southeast Financial Center `C12`.
|
||||
3. Mausrad zoomt um den Zeiger bis vierfach; Ziehen verschiebt und stoppt am Kartenrand.
|
||||
4. Ein Eingabefeld im Panel anklicken, dann M drücken: die Karte darf **nicht** aufgehen.
|
||||
5. W gedrückt halten, M drücken, W loslassen, Karte schließen: die Figur darf **nicht** weiterlaufen.
|
||||
|
||||
Reference in new issue
Block a user