82bd15a074
Erweitert die bisherige Pure-Translate-Optimierung auf beliebige Rigid-2D-Transforms (Translation + Z-Rotation). Statt nur einen Delta-Vektor zu detektieren, wird pro Source ein Rigid-Transform aus Snapshot-vs-aktueller-Geometrie berechnet: - Curve-Sources: aus Endpunkten Drehwinkel + Translation ableiten. - Length-Aenderung der Curve → Scale/End-Grip → abort_pure. - Z-Aenderung der Curve → Z-Drag → abort_pure (UK_OVER-Schreibung geht weiter ueber Regen-Pfad). - Point-Sources: nur Translation aus Position. Konsistenz-Check: alle Curve-Transforms muessen identisch sein, Point-Positionen muessen `canonical(old_pos) == new_pos` erfuellen. Sonst → Regen. Bei pure_transform != None: Transform auf alle Geometries der Cascade anwenden die nicht schon von Rhinos Move/Rotate transformed wurden. Volumes via bb-Snapshot-Check, Sources via identity-transform-check. Resultat: einzelne Wand + Oeffnungen rotieren → instant statt ~100-200ms Regen. Mirror-Limitation: Einzelne Wand-Spiegelung wird als 180°-Rotation interpretiert (matched die Endpunkte). Bei symmetrischen Volumen unsichtbar; bei asymmetrischen Fenstern visuell anders als ein echter Mirror. Mehrere Walls gleichzeitig spiegeln triggert all_consistent=False → Regen-Fallback (korrekt). Bekannte Einschraenkung, separater Fix nötig. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>