나는 boost :: geometry 라이브러리를 사용하여 이전에 정의 된 다각형의 지름을 제공하는 함수를 코딩하고 있습니다.부스트 :: 기하학 폴리곤 내부의 점 좌표를 얻는 방법?
이 지름은 두 점 사이의 최대 거리로 정의됩니다. 따라서, 나는 모든 포인트 쌍의 모든 거리를 계산하는 이중 루프를 코딩하고 있지만 폴리곤 내부의 점 좌표, 또는 점 개체에 액세스하는 방법을 알지 못하고 두 점 사이의 거리 함수를 사용합니다. 라이브러리에 의해 (어느 쪽이 더 빨라야 하는가?). 나는 단지의 중복을 억제
for(auto it1 = boost::begin(boost::geometry::exterior_ring(poly));
it1 != boost::end(boost::geometry::exterior_ring(poly));
++it1)
{
for(auto it2 = it1+1;
it2 != boost::end(boost::geometry::exterior_ring(poly));
++it2)
{
double distance = boost::geometry::distance(*it1, *it2);
if(my_diameter < distance){my_diameter = distance;}
}
}
:
Boost docs on polygon보고 후 나는
이 말에 내 솔루션은 Barend의 제안의 수정 된 버전을 사용하는 것이 었습니다 ... 성공하지 my_polygon.PointList 시도 동일한 거리를 두 번 계산;
예를 들어 주셔서 감사합니다. 나는이 개념을 이해하지 못하고 있지만, 아직 좀 더 최적화 된 것을 찾고 있습니다. N 포인트 폴리곤의 경우 루프 거리를 계산하기 위해 N (N-1)/2 만 필요로 할 때 N^2 연산을 제공합니다 (it1 = it2와 관련이없고 두 번 계산합니다.) 포인트에 액세스하기 위해 outer() 함수를 사용하여 수행 할 수 있습니까? – Liam