다각형 메쉬에서 테스트 내 삼각형을 어떻게 수행 할 수 있습니까?


10

여기에 이미지 설명을 입력하십시오(V1, V2, V3)일반 삼각형 메쉬에서 3 개의 정점이 무작위로 선택되었습니다. 이 3 개의 꼭짓점에 대해, 나는 지오 데식 거리와 그 사이의 경로 (Dijkstra를 사용하여)를 계산하고 위의 그림과 같이 삼각형 모양의 표면을 형성했습니다.

이제 각 경로에있는 정점이 있으며 주어진 정점에서 측지 거리를 계산할 수 있습니다.

내가하고 싶은 것은 삼각형 모양의 영역에있는 정점 또는 삼각형을 얻는 것입니다. 어떻게해야합니까?


2
Barycentric 접근법이 내가 생각하는 것을 수행한다고 가정하면 큰 세트에서는 상당히 느릴 것입니다. 원하는 세트에 9 개의 꼭짓점이있는 9 백만 개의 꼭짓점 세트를 상상해보십시오. v1, v2 및 v3이 필요한 모든 정보를 제공 할 때 전체 세트를 반복하는 이유는 무엇입니까? 플러드 필 답변은 가장 유연한 솔루션입니다. 융통성이 없지만, 이제 형상에있는 것과 같은 선이 있다고 가정 할 수 있다면 스캔 라인이 가장 빠른 방법입니다.
앤드류 윌슨

성능 문제는 절대적으로 옳습니다. 대형 메쉬 에서이 접근법을 사용하고 싶습니다. 따라서 찾고있는 것은 효율적인 방법입니다. 실제로 나는 홍수 채우기 나 스캔 채우기 알고리즘에 익숙하지 않습니다. 그것들을 살펴볼 것입니다. 감사.
mkocabas

3
그래프로 플러드 채우기는 노드에서 시작하여 경계 조건이 충족되고 방문하지 않은 경우 모든 인접 노드를 방문하고 방문으로 표시하고 반복 (재귀)합니다. 변경 : 경로의 모든 노드를 방문한 것으로 표시하고 세트 내의 노드에서 시작합니다. 그런 다음 방문 확인을 경계 조건으로 사용하십시오.
앤드류 윌슨

자세한 설명을 주셔서 감사합니다. 홍수 채우기 알고리즘이 더 합리적이라고 생각하지만 홍수 채우기와 스캔 라인을 모두 구현 한 다음 성능을 비교하고 싶습니다.
mkocabas

답변:


4

플러드 필링에 의존하는 다른 방법이 있습니다. 먼저 가장자리 데이터가 시계 반대 방향 루프를 형성하는 루프로 가장자리 데이터를 정렬하십시오. 그런 다음 루프의 임의 지점에서 시작하여 해당 지점을 연결하는 모서리를 지정합니다. 아웃 바운드 경계 모서리를 사용하고 다른 아웃 바운드 모서리와 교차합니다.면 법선 방향을 가리키면 포함하지 않는 모서리입니다. 이 가장자리부터 경계 가장자리에 닿을 때까지 계속해서 채우기를 종료합니다. 아직 경계 가장자리 정점을 방문하지 마십시오.


홍수 채우기 알고리즘에 익숙하지 않습니다. 당신의 설명은 나에게 조금 복잡해 보입니다. 살펴볼만한 참조 자료를 제공해 주시겠습니까? 감사.
mkocabas

일부를 읽음으로써 해결책을 얻었습니다. 감사.
mkocabas

3

이미 홍수 채우기 사용에 대해 언급했으며 더 유연하지만 더 나은 해결책은 스캔 라인입니다. (지오메트리에 대해 많은 가정을하지만 가능한 특정 세트 및 유사한 세트에 대해서는 가정하기 때문에 가능하다고 말합니다.)

3 개의 점이있는 예의 경우 : 세그먼트 v1, v2와 v3이있는 선에서 교점 정점을 찾으십시오. (v2의 왼쪽 상단에있는 정점)이 정점 v4를 호출합니다.

For every vertex pair a,b down v1,v4 and v1,v3 
    For every vertex from a to b
        Mark as in the set
For every vertex pair a,b down v3,v2 and v4,v3
    For every vertex from a to b
        Mark as in the set

여기에 이미지 설명을 입력하십시오

위의 이미지에서 빨간색과 녹색 선을 동시에 아래로 내려간 다음 빨간색과 파란색 선을 동시에 스캔하여 선을 스캔하기 때문에 scanline이라고합니다.

인덱스 패턴이있는 경우이 솔루션은 매우 빠릅니다. 그렇지 않으면 어떤 인접 정점이 선에 있는지 결정하기 위해 계산이 필요합니다.

재미있는 점은 스캔 라인, 무게 중심 테스트 (삼각형 경계 상자에서) 및 플러드 필은 3D 렌더링에서 삼각형을 그리는 모든 방법입니다.


2

표면의 각 점에 대해 표면 바운드 무게 중심 좌표를 계산 한 다음 삼각형 내부 또는 외부를 확인하는 데 사용할 수 있다고 생각합니다.

나는 정확한 알고리즘을 가지고 있지 않지만이 종류의 좌표를 정확하게 처리하는 것처럼 보이는 다음 논문을 발견했습니다.

지표면의 무게 중심 좌표


답과 참고 용지에 감사드립니다. 제안 된 방법을 구현하려고합니다.
mkocabas
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.