|
FCOS |
В этой части содержатся следующие параграфы книги: анализ процедур FCOS; исследование треугольника на пересечение с лучем.
2.
Анализ процедур FCOS.
2.1. О.
2.1.1.
Н.а.
3.
Создание приложений FCOS.
3.
1. О.
3.1.1.
Н.а.
1. Принципы рендеринга.
1.4. Исследование треугольника на пересечение с лучём.
Исследование начинается с того, что проверяется параллельность луча и плоскости. Если они не параллельны, исследование продолжается. Подсчитывается расстояние (
t) от начала светового луча до треугольника. Затем вычисляются координаты точки (h1) пересечения луча и плоскости, в которой расположен треугольник.Дальнейшие расчёты производятся с целью подтверждения сонаправленности нормали с векторными произведениями векторов
h2, h3=h1–c2 и двух боковых сторон. Если результат хотя бы одного векторного произведения окажется не сонаправленным с вектором нормали, то это означает, что точка пересечения луча и плоскости находится вне треугольника.Ниже приводится функция
InterTri, которая и осуществляет проверку на пересечения луча с треугольником. На входе требуется номер треугольника и геометрические параметры свето-вого луча. В регистре AX возвращается подтверждение (=1) или опровержение (=0) пере-сечения, а в переменной t – расстояние от начала луча до треугольника.int InterTri(int Obj, Ray& ray, double& t) c3 h6
{ c2
STRUCTRI*tmp = &Trian[Obj] ; h5 h3
double vd = tmp->nrm & ray.Dir ;
if (vd > -Threshold && vd < Threshold) return (0) ; h2 nrm h4
h1
Vector h1, h2 ;
t = (tmp->nrm & (Vertx[tmp->c1] - ray.Org)) / vd ;
O(0,0,0) c1h1 = ray.Org + ray.Dir*t ; h2 = h1-Vertx[tmp->c1] ;
if ((tmp->nrm & (tmp->h4 ^ h2))<0 || (tmp->nrm & (h2 ^ tmp->h5 ))<0 ||
(tmp->nrm & (tmp->h6 ^ (h1-Vertx[tmp->c2])))<0) return (0) ;
return (t > Threshold) ;
}
2. Геометрические примитивы.
2.1. Треугольник.
Треугольник является основным элементом построения всех остальных геометрических тел в FVR, поэтому его инициализация происходит особым образом.
4.
Построение драйверов.
4.1. О.
4.1.1.
Н.а.
5.
Руководство пользователя FCOS.
5.1. О.
5.1.1.
Н.а.