겹치지 않는 삼각형 로 구성된 2D 메쉬 와 점 집합 { p i } M i = 1 ⊂ ∪ N k = 1 T K로 가정 합니다. 각 점이 어느 삼각형에 있는지 결정하는 가장 좋은 방법은 무엇입니까?
예를 들어, 다음 이미지 우리가 , P (2) ∈ T (4) , P (3) ∈ T 2 I 함수 싶다 있도록 F 목록이 반환 F ( P 1 , P 2 , P 3 ) =을 [ 2 , 4 , 2 ] .
Matlab에는 Delaunay 메쉬에 원하는 기능을 수행 하는 함수 점 위치가 있지만 일반 메쉬에는 실패합니다.
나의 첫번째 (바보 같은) 생각은 모든 노드를 들면, , 모든 삼각형을 통해 루프가있는 삼각형 알아 쪽 난 에 그러나 이것은 매우 비효율적이다 -. 당신은 모든 지점에 대한 모든 삼각형을 반복해야 할 수도 있습니다, 그래서 O ( N ⋅ M ) 작업 이 필요할 수 있습니다 .
내 다음 생각은 모든 점 에 대해 가장 가까운 이웃 검색을 통해 가장 가까운 메쉬 노드를 찾은 다음 가장 가까운 노드에 연결된 삼각형을 살펴 보는 것입니다. 이 경우, 작업은 O ( a ⋅ M ⋅ l o g ( N ) ) 일 것입니다. 여기서 a 는 메시의 노드에 연결된 최대 삼각형 수입니다. 이 접근법에는 해결할 수 있지만 성가신 문제가 있습니다.
- 효율적이지 않은 이웃 검색을 구현하거나 라이브러리가있는 라이브러리를 찾는 것이 중요합니다. 이는 사소한 작업이 아닙니다.
- 각 노드에 부착 된 삼각형 목록을 저장해야합니다. 내 코드는 현재 설정되어 있지 않습니다. 지금 노드 좌표 목록과 요소 목록 만 있습니다.
모두 우아하지 않은 것처럼 보이며 더 좋은 방법이 있어야한다고 생각합니다. 이것은 많은 문제가 발생해야하므로 이론적으로 또는 사용 가능한 라이브러리 측면에서 노드가있는 삼각형을 찾는 가장 좋은 방법을 추천 할 수 있는지 궁금합니다.
감사!