Random-Schraffur modellraum-verankert + Motiv-Editor fuer Custom-Linien
Random-Verankerung (Bugfix): die Streu-Striche haengen nicht mehr an der Polygon-Bounding-Box, sondern an einem absoluten Modellraum-Gitter (hashCell aus absoluten Zell-Indizes + hatch.seed). Beim Vergroessern der Flaeche bleiben bestehende Striche stehen, am Rand kommen neue dazu, die Dichte bleibt konstant, Verschieben wandert nicht; 'Neu wuerfeln' (neuer Seed) verschiebt das ganze Feld. Alle Renderpfade ziehen aus derselben Funktion. Verankerungs- und Verschiebe-Dichte-Test ergaenzt. Motiv-Editor: neuer wiederverwendbarer MotifEditor (Punkte setzen/ziehen in einer Einheitszelle, Live-Loop-Vorschau). LineStyle.kind 'custom' + motif (points/length), additiv durchgereicht (analog zigzag) und in allen Renderpfaden gekachelt (motifPoints, Verallgemeinerung von zigzagPoints). ResourceManager-Umschalter Vollinie/Strich/Zickzack/Motiv, LineSwatch- Vorschau. Insgesamt 5 neue Tests, 113 gruen.
This commit is contained in:
+12
-1
@@ -50,14 +50,25 @@ export interface LineStyle {
|
||||
* • "zigzag" — der Strich variiert in Y (Zickzack/Welle), Parameter in
|
||||
* `zigzag`. Fehlt `kind`, gilt „dash"; die heutigen Renderer ignorieren
|
||||
* `kind` und zeichnen weiterhin gerade Striche (Backward-Compat).
|
||||
* • "custom" — ein frei gezeichnetes Motiv (offene Polylinie in einer
|
||||
* Einheitszelle), das sich entlang der Linie wiederholt/loopt. Parameter in
|
||||
* `motif`. „zigzag" bleibt der eigene, parametrische Sonderfall.
|
||||
*/
|
||||
kind?: "dash" | "zigzag";
|
||||
kind?: "dash" | "zigzag" | "custom";
|
||||
/**
|
||||
* Parameter der Zickzack-/Wellen-Linie (nur `kind==="zigzag"`), beide in mm
|
||||
* Papier: `amplitude` = Ausschlag quer zur Linie, `wavelength` = Periodenlänge
|
||||
* entlang der Linie. Fehlt es, wird die Linie gerade gezeichnet.
|
||||
*/
|
||||
zigzag?: { amplitude: number; wavelength: number };
|
||||
/**
|
||||
* Frei gezeichnetes Wiederhol-Motiv (nur `kind==="custom"`): eine OFFENE
|
||||
* Polylinie in einer Einheitszelle. `points` sind die Stützpunkte in mm Papier;
|
||||
* `x` läuft 0..`length` (mm entlang der Linie = Wiederhollänge), `y` = senkrechter
|
||||
* Versatz zur Linienachse (mm, +/−). Das Motiv wird alle `length` entlang der
|
||||
* Linie gekachelt. Fehlt es, wird die Linie gerade gezeichnet.
|
||||
*/
|
||||
motif?: { points: Vec2[]; length: number };
|
||||
}
|
||||
|
||||
/** Mögliche Schraffur-Muster im Plan/Schnitt. */
|
||||
|
||||
Reference in New Issue
Block a user