Hm, dass die Felder nicht geschlossen werden ist sehr komisch. Vielleicht hat sich in die allerneuste Version(v1.1-alpha.3b) ein neuer Fehler eingeschlichen, und v1.1-alpha.3 funktioniert noch, ich werde nochmal durchgucken ob mir was auffällt.
#edit: hab nachgeguckt, sowohl v1.1-alpha.3 als auch v1.1-alpha.3b hatten einen Fehler, habe jetzt die Version v1.1-alpha.4 hochgeladen, die sollte funktionieren.
Die Vorgewende werden tatsächlich etwas komisch errechnet:
Ich gehe mal davon aus, dass wir eine Kontur haben und den Vorgewendevektor von einer Konturkoordinate unter "dir" in der contour.txt berechnen wollen.
Wir möchten den Vorgewende Vektor für 10,10 anhand folgender Skizze berechnen, die Koordinaten sind die Eckpunkte des Feldes:
(0,10) (10,10)
(0,0) (10,0)
Wenn wir hier ein 1m Vorgewende haben wollen bei diesem Feld, müsste die Ecke des Vorgewendes für den Kontureckpunkt (10,10) bei (9,9) sein. Vielleicht nimmst du jetzt an, dass in der Contour.txt die Koordinate (9,9) angegeben ist, dies ist aber nicht so. In Cerea kann man die Breite des Vorgewendes einstellen, deshalb wird stattdessen ein Vektor angegeben mit dem an die gewünschte Koordinate (9,9) ausgehend von dem Kontureckpunkt (10,10) kommt, also (-1,-1). Aus mir unbekannten Gründen steht in der Datei aber nicht dieser Vektor, sondern der im rechten Winkel dazu stehende Vektor, dieser errechnet sich für den Vektor (a,b) mit (-b,a) (siehe https://de.wikipedia.org/wiki/Normalenvektor), in der Datei steht also dann statt (-1,-1) tatsächlich (1,-1).
Die Vektoren für das Vorgewende (also (-1,-1) im Beispiel) werden bei mir durch die Winkelhalbierende zwischen den benachbarten Koordinaten berechnet, also im Beispiel die Winkelhalbierende zwischen (0,10),(10,10),(10,0) und dann so weit herausgesetzt, dass die beiden Strecken (0,10) -> (10,10) und (10,10) -> (10,0) einen Abstand von 1 von dem Vorgewendeeckpunkt haben.
Cerea kann dann einfach diesen Vektor skalieren mit der in Cerea eingestellten Vorgewendebreite und kommt an die richtige Stelle für das Vorgewende.
Dieses Verfahren ist nicht perfekt und kann zu Fehlern führen, funktioniert aber in den meisten Situationen recht gut, das eigentliche Problem names "polygon offsetting" ist recht schwer perfekt zu lösen und da mein einfaches Verfahren mit Winkelhalbierenden für so gut wie alle echten Felder funktioniert habe ich es dabei belassen.