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 Polygonvon einem früheren Thread zu Points. Wenn ich jedoch versuchte, NormalM12.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 Graphicsohne Erfolg aus einem Objekt zu extrahieren . Hat jemand Vorschläge, wie er die Polygonsaktualisierten 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}}