KD 트리를 구현하는 방법을 알아 내려고 노력 중입니다.
Ericson 의 "실시간 충돌 감지"페이지 322
Google 도서 미리보기에서 링크를 클릭 할 때 표시되지 않는 경우 텍스트 섹션이 아래에 포함되어 있습니다.
관련 섹션 :
kd 트리와 광선 또는 직선 세그먼트를 교차시키는 기본 개념은 간단합니다. 선은 노드의 분할 평면과 교차하고 교차점의 t 값이 계산됩니다. t가 선 간격 (0 <= t <= tmax) 내에 있으면 선이 평면을 가로 지르고 트리의 두 자식이 재귀 적으로 내립니다. 그렇지 않으면 세그먼트 원점을 포함하는 면만 재귀 적으로 방문합니다.
여기 내가 가진 것 : ( 글자가 보이지 않으면 새 탭에서 이미지 열기 )
논리 트리
여기 주황색 광선이 3D 장면을 통과합니다. x는 평면과의 교차점을 나타냅니다. 왼쪽에서 광선이 닿습니다.
- 장면을 둘러싸는 큐브의 앞면
- (1) 분할면
- (2.2) 분할면
- 장면을 둘러싸는 큐브의 오른쪽
그러나 위의 Ericson의 기본 설명을 순진 히 따르면 다음과 같은 일이 발생합니다.
- 분할면 (1)에 대해 테스트하십시오. 광선이 분할 평면 (1)에 충돌하므로 분할 평면 (1)의 왼쪽 및 오른쪽 자식이 다음 테스트에 포함됩니다.
- 분할면 (2.1)에 대해 테스트합니다. Ray는 실제로 그 비행기를 쳐서 (오른쪽으로) 두 자녀 모두 다음 레벨의 테스트에 포함 됩니다. (이것은 반 직관적이므로 최후의 노드 만 후속 테스트에 포함되어서는 안됩니다)
주황색 광선이 장면을 올바르게 통과 할 때 어떤 일이 발생하는지 설명 할 수 있습니까?