변환 된 다각형의 좌표 얻기

Dec 10 2020

업데이트 된 위치 (예 : 형상 간의 관계)를 기반으로 더 복잡한 처리 및 분석을 수행하려는 다음과 같은 형태의 다각형이 많이 있습니다.

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

내가 번역 a의 좌표를 복구하는 방법에 내 솔루션을 발견했다고 생각 Polygon에서 이전 스레드 에 대한을 Points. 그러나 NormalM12.1 을 적용하려고 하면식이 다시 반환됩니다.

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

Graphics객체 에서 좌표를 추출하는 더 복잡한 방법을 시도해 보았습니다 . 누구든지 Polygons업데이트 된 범위를 복구하는 방법에 대한 제안이 있습니까?

답변

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

또는

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

좌표를 얻으려면 :

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