Holen Sie sich die Koordinaten des übersetzten Polygons
Dec 10 2020
Ich habe viele Polygone der folgenden Form, die ich basierend auf der aktualisierten Position (z. B. Beziehungen zwischen Geometrien) komplizierter verarbeiten und analysieren möchte.
Translate[Polygon[{{0, 0}, {0, 50}, {100, 50}, {100, 0}}], {954, 840}]
Ich dachte , ich meine Lösung gefunden hatte , wie die Koordinaten eines übersetzt sich erholen Polygon
von einem früheren Thread zu Points
. Wenn ich jedoch versuchte, Normal
M12.1 anzuwenden, wird der Ausdruck einfach erneut zurückgegeben.
Normal[Translate[Polygon[{{0, 0}, {0, 50}, {100, 50}, {100, 0}}], {954, 840}]]
Ich habe einige kompliziertere Methoden ausprobiert, um die Koordinaten Graphics
ohne Erfolg aus einem Objekt zu extrahieren . Hat jemand Vorschläge, wie er die Polygons
aktualisierten Extents wiederherstellen kann ?

Antworten
1 kglr Dec 10 2020 at 11:12
translateToNormal[t_Translate] := TranslationTransform[#2] /@ # & @@ t
tp = Translate[Polygon[{{0, 0}, {0, 50}, {100, 50}, {100, 0}}], {954, 840}]
translateToNormal[tp]
Polygon[{{954, 840}, {954, 890}, {1054, 890}, {1054, 840}}]
Alternative,
translateToNormal2 = # /. Translate -> (TranslationTransform[#2] /@ # &) &;
translateToNormal2 @ tp
Polygon[{{954, 840}, {954, 890}, {1054, 890}, {1054, 840}}]
Graphics[{FaceForm[], EdgeForm[{AbsoluteThickness[10], Red}], translateToNormal[tp],
EdgeForm[{Thin, Black}], tp}]

So erhalten Sie die Koordinaten:
normalCoords[t_Translate] := TranslationTransform[#2] @ #[[1]] & @@ t
normalCoords[tp]
{{954, 840}, {954, 890}, {1054, 890}, {1054, 840}}