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 Polygon
de un hilo anterior sobre Points
. Sin embargo, cuando intenté aplicar Normal
M12.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 Graphics
objeto sin éxito. ¿Alguien tiene alguna sugerencia sobre cómo recuperarían las Polygons
extensiones 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}}