Dapatkan koordinat Poligon yang Diterjemahkan

Dec 10 2020

Saya memiliki banyak poligon dengan bentuk berikut yang ingin saya lakukan pemrosesan dan analisis yang lebih rumit berdasarkan lokasinya yang diperbarui (seperti hubungan antara geometri).

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

Saya pikir saya telah menemukan solusi saya tentang cara memulihkan koordinat terjemahan Polygondari utas sebelumnya tentang Points. Namun, ketika saya mencoba menerapkan NormalM12.1 hanya mengembalikan ekspresi itu lagi.

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

Saya telah mencoba beberapa cara yang lebih rumit untuk mengekstrak koordinat dari Graphicsobjek tetapi tidak berhasil. Apakah ada yang punya saran tentang bagaimana mereka akan memulihkan Polygonsluasan yang diperbarui?

Jawaban

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

Kalau tidak,

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

Untuk mendapatkan koordinat:

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