2016-07-04 4 views
0

저는 CGAL을 사용하여 STL 벡터로 수백만 개의 3D 점으로 이루어진 메모리 맵 파일을 가지고 있습니다. 데이터 세트를 거의 같은 부분으로 나누는 임의의 평면이 주어지면 모든 내부 포인트가 벡터에서 연속적 이도록 데이터 세트를 정렬하고 마찬가지로 외부 포인트를 정렬하려고합니다. 그런 다음이 프로세스를 임의의 깊이로 반복하여 축이 아닌 정렬 된 BSP 트리를 만들어야합니다.점의 벡터를 두 개의 공간으로 나눕니다.

데이터 세트의 크기 때문에 가능하면이 작업을 수행하고 싶습니다. 필자는 filtered_iterator를 만드는 데 사용하는 술어 펑터를 가지고 있지만 물론 포인트를 정렬하지 않고 일치하지 않는 것을 건너 뜁니다. 그래서 수있는 두 번째 벡터를 만들고 정렬 된 점을 복사하고 원래 벡터 라운드 로빈 스타일을 다시 사용하십시오. 그러나 가능하면 피할 싶습니다 시작자를 표시하는 반복기를 유지하는 경우 그리고 각 공간의 끝.

+0

이미 CGAL에 kd- 트리 데이터 구조가 있으므로 사용자의 요구에 맞을 수도 있습니다 ... –

+0

kd- 트리는 축 정렬 평면을 사용하지만 실제로는 임의로 정렬해야합니다. 또한 (내 질문에서 이것을 생략하고, 나쁘다) kd-trees는 리프 노드에만 포인트를 저장하고 지점 노드에는 몇 가지 포인트가 필요하다. 하지만 그것을 언급 해 주셔서 감사합니다! – MerseyViking

답변

0

당연히, 신을 질문하는 것에 의해, 나는 내가 게시했을 때 그들과 거의 직접적인 의사 소통을 받았다!

나는 정확히 내가 필요한 것을 수행하는 STL 알고리즘 partition에 대해 눈이 멀었다.

관련 문제