|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Stepan Polovnikov 2:5056/16.47 12 May 2001 16:17:54 To : Serge Kanilo Subject : пеpесечения -------------------------------------------------------------------------------- >> ER> А скоpость? Ты их не пpовеpял в деле? >> Геометрическое решение быстрее. SK> Принципиальной разницы нет, поскольку расписанное SK> решение через уравнение второй степени приведет SK> к тому же самому коду. Разница в скорости. При трассировке в перую очередь важно получать не само решение уравнения, а факт пересечения. Прикинь количество операций и получишь ускорение в 2-3 раза при отсутствии перечесения. Зачем решать уранение, если оно не имеет решения? Что и определяется геометрическими свойствами. >> ;r-радиус сферы >> ;с-центр сферы >> ;o-точка луча >> ;d-направление луча SK> Hаправление имеет единичную длину, не так ли? SK> Hе здесь ли кроется причина такой простоты? SK> Ведь в этом случае уравнение будет SK> t^2-2*(c-o)*d*t+(c-o)^2-r^2=0 Hет. При трассировке вектор d единичный, так что уравнение остается прежним. Это свойство используется не только при расчете пересечения со сферой, но и дает значительный выигрыш для других объектов. По крайне мере, нормализация его выполняется один раз. А во всех уравнениях исходят из расчета единичной длины d. SK> Как раз на корень и несколько умножений отличается SK> от исходной задачи. В общем случае трассировки - нет. SK> А вот вроде и формула для вычисления корня. Согласно литературе. Решение Аддитивные Мультипликативне Алгоритмическое 17 15 Геометрическое 16 13 "The important difference is that the rejection tests are done much earlier in the process, making the overall cost of this algorithm lower on average." SK> Если бы еще знать, что такое l2. Потерялся l2=l*l ;) >> return t; SK> Странно, программка то bool возвращает, то double, что за язык такой? :-) asm ;) SK> Просто непонятно, что возвращается и как его потом анализировать. Если вернулся false (т.е. 0), то нет пересечения, иначе расстояние до объекта - t. Расчитываешь точку p=o+d*t и вычисляешь для нее цвет. Пускаешь из нее отраженный и преломленный лучи, если необходимо. Bye! --- GoldED+/W32 snapshot-2001.02.24 * Origin: NETMAIL (2:5056/16.47) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/223903afd33ce.html, оценка из 5, голосов 10
|