poly_poly_clip¶
poly_poly_clip ermittelt die Schnittpunkte eines Polygons an einer geschlossenen Hülle.
-
<rmXY, idx> = poly_poly_clip(nOpt, clip, poly)
Returnwert
rmXY, idx: rmXY ist eine Matrix mit zwei Spalten. Die erste Spalte enthält die x-Koordinaten und die zweite Spalte die y-Koordinaten des Ergebnis-Polygons. idx ist ein Vektor mit den Indizes (siehe Beispiel).
Parameter
-
nOpt
nOpt gibt an, was für ein Polygon erzeugt werden soll. nOpt kann folgende Werte annehmen:
Wert | Bedeutung |
---|---|
0 | union (Hülle um beide Polygone). |
1 | Differenz (Teil des Subjekt-Polygons der innen liegt). |
2 | Differenz (Teil des Subjekt-Polygons der aussen liegt). |
3 | Hülle ohne Subjekt-Polygon. |
-
clip
clip sind die x/y-Koordinaten der Hülle an der das Subjekt-Polygon geclippt werden soll. Die Koordinaten müssen in einen komplexen Vektor geschrieben werden (x + 1i*y) (siehe Beispiel).
-
poly
poly sind die x/y-Koordinaten des Subjekt-Polygons.
Beispiel
def test(option)
{
xhull = [1, 1, 2, 2, 1];
yhull = [1, 2, 2, 1, 1];
nh = len(xhull)
h = plot(xhull,yhull)
xp = [1.3, 1.3, 1.6, 1.6, 1.3];
yp = [0.3, 2.6, 2.6, 0.3, 0.3];
<xy, idx> = poly_poly_clip(option, xhull[1:nh] + 1i * yhull[1:nh], xp + 1i*yp);
if (len(idx) == 1 && idx[1] == 0) {
return TRUE;
}
nPoly = len(idx);
if (len(xy) > 1) {
idx = [0;idx];
for (i in 2:nPoly+1) {
h = plot(xy[idx[i-1]+1:idx[i]; 1], xy[idx[i-1]+1:idx[i];2], h[2]);
}
}
return xy;
}
Siehe auch
id-1848134