翻訳されたポリゴンの座標を取得します

Dec 10 2020

更新された場所(ジオメトリ間の関係など)に基づいて、より複雑な処理と分析を実行したい次の形式のポリゴンが多数あります。

Translate[Polygon[{{0, 0}, {0, 50}, {100, 50}, {100, 0}}], {954, 840}]

私は翻訳の座標回復する方法の私の解決策見つけたと思ったPolygonから、以前のスレッドについてをPoints。ただし、NormalM12.1を適用しようとすると、式が再び返されます。

Normal[Translate[Polygon[{{0, 0}, {0, 50}, {100, 50}, {100, 0}}], {954, 840}]]

Graphicsオブジェクトから座標を抽出して役に立たないようにするために、もっと複雑な方法をいくつか試しました。Polygons更新されたエクステントをどのように回復するかについて誰か提案がありますか?

回答

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}}]

または、

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}]

座標を取得するには:

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