Я намагаюся розібратися, як реалізувати дерево KD.
На сторінці 322 розділу "Виявлення зіткнень у реальному часі" Еріксон
Текстовий розділ включений нижче, якщо попередній перегляд книг Google не дозволяє вам бачити його час натискання на посилання
Відповідний розділ:
Основна ідея, що перетинає відрізок променя або спрямованої лінії з деревом kd, є простою. Лінія перетинається проти площини розщеплення вузла і обчислюється значення t перетину. Якщо t знаходиться в межах інтервалу лінії, 0 <= t <= tmax, лінія стримує площину і обидва дітей дерева рекурсивно спускаються. Якщо ні, то рекурсивно відвідується лише сторона, що містить початок сегмента.
Тож ось що я маю: ( відкрийте зображення на новій вкладці, якщо ви не бачите буквене позначення)
Логічне дерево
Тут помаранчевий промінь проходить через 3d сцену. Х являють собою перетин з площиною. З Ліворуч промінь потрапляє:
- Передня частина окулюючого куба сцени,
- Площина розщеплення (1)
- (2.2) площина розщеплення
- Права частина окулюючого куба сцени
Але ось що б сталося, наївно слідуючи основним описом Еріксона вище:
- Випробування на площину розщеплення (1). Рей потрапляє в площину розщеплення (1), тому ліва і права діти площини розщеплення (1) включаються в наступний тест.
- Тест на площину розщеплення (2.1). Рей насправді вражає цю площину (далеко вправо), тому обох дітей включають у наступний рівень тестів. (Це протиінтуїтивно - не слід включати лише нижній вузол у наступні тести)
Чи може хтось описати, що відбувається, коли помаранчевий промінь пройде крізь сцену правильно?