Obtenha as coordenadas do polígono traduzido

Dec 10 2020

Eu tenho muitos polígonos da forma a seguir que desejo fazer um processamento e análise mais complicados com base em sua localização atualizada (como relacionamentos entre geometrias).

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

Pensei ter encontrado minha solução de como recuperar as coordenadas de um tópico traduzido Polygonde um tópico anterior sobre Points. No entanto, quando tentei aplicar NormalM12.1 apenas retornei a expressão novamente.

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

Tentei algumas maneiras mais complicadas de extrair as coordenadas de um Graphicsobjeto, mas sem sucesso. Alguém tem alguma sugestão sobre como eles recuperariam as Polygonsextensões atualizadas?

Respostas

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

Alternativamente,

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

Para obter as coordenadas:

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