Obtener las coordenadas del polígono traducido

Dec 10 2020

Tengo muchos polígonos de la siguiente forma que deseo hacer un procesamiento y análisis más complicado en función de su ubicación actualizada (como las relaciones entre geometrías).

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

Pensé que había encontrado mi solución de cómo recuperar las coordenadas de un traducidas Polygonde un hilo anterior sobre Points. Sin embargo, cuando intenté aplicar NormalM12.1 simplemente devuelve la expresión nuevamente.

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

He intentado algunas formas más complicadas de extraer las coordenadas de un Graphicsobjeto sin éxito. ¿Alguien tiene alguna sugerencia sobre cómo recuperarían las Polygonsextensiones actualizadas?

Respuestas

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 obtener las coordenadas:

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