Obtenir les coordonnées du polygone traduit
Dec 10 2020
J'ai de nombreux polygones de la forme suivante que je souhaite effectuer un traitement et une analyse plus compliqués en fonction de leur emplacement mis à jour (comme les relations entre les géométries).
Translate[Polygon[{{0, 0}, {0, 50}, {100, 50}, {100, 0}}], {954, 840}]
Je pensais avoir trouvé ma solution sur la façon de récupérer les coordonnées d'une traduction Polygon
d' un fil de discussion précédentPoints
. Cependant, lorsque j'ai essayé d'appliquer Normal
M12.1, je renvoie simplement l'expression.
Normal[Translate[Polygon[{{0, 0}, {0, 50}, {100, 50}, {100, 0}}], {954, 840}]]
J'ai essayé des moyens plus compliqués d'extraire les coordonnées d'un Graphics
objet en vain. Quelqu'un a-t-il des suggestions sur la manière de récupérer les Polygons
extensions mises à jour?

Réponses
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}}]
Alternativement,
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}]

Pour obtenir les coordonnées:
normalCoords[t_Translate] := TranslationTransform[#2] @ #[[1]] & @@ t
normalCoords[tp]
{{954, 840}, {954, 890}, {1054, 890}, {1054, 840}}