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 Polygon
de um tópico anterior sobre Points
. No entanto, quando tentei aplicar Normal
M12.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 Graphics
objeto, mas sem sucesso. Alguém tem alguma sugestão sobre como eles recuperariam as Polygons
extensõ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}}
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?
Christopher Nolan uma vez se arrependeu de ter lido o 'roteiro de Pulp Fiction' de Quentin Tarantino