나는이 코드를 작성했지만 파일 교환에 없습니다. 나는 그들에게 직접 우편으로 줄 것을 확신 할 수있다.
볼록 선체까지의 거리를 찾는 것이 상대적으로 쉽지만 사소하지는 않습니다. delaunay tessellation은 어쨌든 convex hull로 묶입니다. 따라서 그 모자이크를 볼록 선체로 쉽게 변환하거나 볼록 선체를 사용할 수 있습니다. 볼록한 선체는 종종 많은 목적을 위해 대단히 가깝지 않은 근사치입니다. 특히 색 매핑을 위해 이것을 사용한다면, 아마도 이것이 내가 보았던 가장 일반적인 것입니다. 이 경우 알파 모양이 훨씬 더 나은 선택입니다. 알파 도형은 일반적으로 볼록하지 않지만 삼각형 경계 표면을 갖습니다. 그래서
는 볼록 삼각 측량에 가장 가까운 지점을 찾을 수 있습니다 :
- 는 볼록 경계면, 즉, 볼록 선체로 변환합니다. 이것은 사면체 쌍들 사이에서 공유되지 않는 삼각형을 찾는 것을 감소시킵니다. 내부 패싯은 항상 모든 패싯 목록에서 정확히 두 번 나타납니다. 물론이 트릭은 비 convex Tessellation에도 적용됩니다. 알파도 마찬가지입니다.
각 삼각형 표면면에 대한 경계 외접원을 계산하십시오. 따라서 패싯 검사를 중단 할시기를 알 수 있습니다.
표면의 각 점까지의 거리를 구하십시오. 각 패싯을 해당 패싯에서 가장 가까운 점까지의 거리로 정렬합니다. 그 목록에서 가장 가까운 패싯을보고 시작하십시오.
3 단계에서 찾은 외관상 가장 가까운 패싯까지의 거리를 계산하십시오. 간단한 솔루션은 제한된 선형 최소 제곱으로 변환 될 수있는 최소 거리 프로그래밍 (LDP)에 의해 발견됩니다. Lawson & Hanson에는이 알고리즘이 있습니다. 발견 현재 최선의 거리까지
4 단계를 반복이 루프는 적어도 볼록 선체를 들어, 정말 아주 짧은 것 2 단계에서 circumcircles의과 비교, 거리보다 작다. 알파 형태의보다 일반적인 비 - 볼록 선체의 경우 더 많은 시간이 걸릴 수 있습니다.
문제의 지점으로부터 멀리 떨어져있는 검색에서 패싯을 제외하여 검색 공간을 조금 줄일 수도 있습니다. 이 패싯 법선을이 테스트에 사용하십시오.
근본적으로 당신이 묻는 것은 내부 점의 좌표와 4 개의 정점의 좌표가 주어진 정사면체의 표면에 가장 가까운 점을 찾는 것입니다. – Dan
@Viruss mca : 코드에만 코드 형식을 사용하십시오. –
@ Dan : 네, 맞습니다. Matlab이 반환하는 구조에서 4 개의 꼭지점을 찾는 방법을 잘 모르겠다는 것을 인정해야합니다. 그러나 내 테스트 포인트는 사면체 내부가 아닌 외부입니다. –