fix(extract): Regressionsschutz für edges-Sortierschlüssel, _line()-Docstring berichtigt
Fixrunde 1 zu Task 10 (Rückmeldung des Koordinators). Zwei Punkte: Die edges-Korrektur aus dem Hauptcommit (Sortierschlüssel deckte nur (line, klasse) ab, nicht breite/fahrbahn) hatte keinen committeten Regressionstest - nur eine Ad-hoc-Probe, die nicht mitkam. Drei Tests ergänzt: zwei edges-Einträge mit gleicher Linie/Klasse aber unterschiedlicher Breite in beiden Reihenfolgen (der eigentliche Regressionsschutz - mit dem alten zweiteiligen Schlüssel probeweise reproduziert, um die Fehlermeldung zu belegen, dann zurückgestellt), zwei bridges-Einträge in beiden Reihenfolgen, und eine Linie gegen ihre exakte Umkehrung einmal als curb, einmal als edges - das ist die Zusicherung, auf der _line()s ganze Normalisierung beruht, und stand bisher nirgends als Test. _line()-Docstring behauptete im Präsens, Laternen wählten ihre Seite schon aus der Kantenrichtung statt aus der Listenposition. Das stimmt nicht: src/world/props.js:107 wählt weiterhin über den geraden/ungeraden Index (vergeLampPoints(), liest chunk.centerlines/chunk.roads). Docstring jetzt als Bedingung formuliert - was vorausgesetzt wird und wo es eingelöst wird (eine geometriebasierte Nachfolgefunktion in props.js, im Plan als sidewalkLampPoints() vorgesehen) - statt als Tatsachenbehauptung, und ohne Aufgabennummer im Kommentar. overview.py, geometry.js und props.js bewusst nicht angefasst (Koordinator: das ist Sache der Aufgaben 13-15). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
f97b7d9c81
commit
887cb09433
2 files changed
+64
-5
No files matched your search
@@ -74,11 +74,18 @@ def _sorted_surfaces(entries: list[dict]) -> list[dict]:
|
||||
def _line(line, i: int, j: int) -> list[list[float]]:
|
||||
"""Ein Linienzug in Chunk-Koordinaten, richtungsunabhängig festgelegt.
|
||||
|
||||
normalize() dreht eine Linie in eine feste Laufrichtung. Das ist hier anders als bei den
|
||||
früheren centerlines erwünscht: Die Laternen wählen ihre Seite seit Teil 2 aus der
|
||||
Kantenrichtung *und* prüfen gegen die Gehwegfläche, hängen also nicht mehr an der
|
||||
Listenposition (siehe props.js). Damit darf die Ausgabe sortiert und normalisiert werden,
|
||||
und ein Lauf erzeugt wieder Datei für Datei dasselbe.
|
||||
normalize() dreht eine Linie in eine feste Laufrichtung. Normalisieren und Sortieren ist für
|
||||
curb und edges nur zulässig, solange keine Laterne ihre Straßenseite aus der Listenposition
|
||||
wählt, sondern aus der Geometrie - Kantenrichtung und eine Prüfung gegen die Gehwegfläche.
|
||||
Bei den früheren centerlines war das nicht so, deshalb blieben sie unsortiert und
|
||||
unnormalisiert.
|
||||
|
||||
Eingelöst wird die Voraussetzung erst mit einer geometriebasierten Nachfolgefunktion in
|
||||
props.js (vorgesehen als sidewalkLampPoints(), als Ablösung von vergeLampPoints()). Heute
|
||||
liest dort noch niemand curb oder edges: vergeLampPoints() wählt die Seite weiterhin über den
|
||||
geraden/ungeraden Index (Zeile 107) und läuft auf chunk.centerlines/chunk.roads. Bis zur
|
||||
Ablösung ist das hier deshalb folgenlos - nicht weil die Bedingung gälte, sondern weil noch
|
||||
kein Verbraucher zuhört.
|
||||
"""
|
||||
ox = SLICE["x0"] + i * CHUNK_SIZE
|
||||
oy = SLICE["y1"] - j * CHUNK_SIZE
|
||||
|
||||
Reference in new issue
Block a user