32
6.1.2.2 Пересечение двух отрезков
Алгоритм реализации этой задачи состоит из двух частей – определения пересечения прямых и
проверки принадлежности точки пересечения отрезкам. Первая часть выполняется, по
алгоритму 5.1.2.1 Заданы два отрезка значениями координат -
)
11 2 2
,
yxy и
()
'' ' '
11 2 2
,
yxy .
Отрезки, как уже говорилось, представляют собой ребра граней объектов. По значениям
координат начала и конца этих отрезков определяются уравнения прямых, которым они
принадлежат. Далее определяется, есть ли точка пересечения этих прямых? То есть, не
параллельны ли они и не совпадают ли. Если предыдущая проверка дала ответ – ложь, то
определяется точка пересечения
,
ii
y
. Но наличие этой точки не говорит о том, что
пересекаются собственно отрезки. Поэтому выполняется минимаксный тест принадлежности
точки пересечения отрезкам. Минимаксный тест реализуется с помощью следующего
логического выражения.
()
()
()
)
'' ''
12 1 2 12 1 2
max min , min min max , max
i
xxxx xx xx
⎡⎤⎡ ⎤
≤≤
⎣⎦⎣ ⎦
и
()
()
()
)
'' ''
12 12 12 12
max min , min min max ,max
i
yy y y y yy y y
⎡⎤⎡ ⎤
≤≤
⎣⎦⎣ ⎦
.
Если ответ на этот тест – истина, то точка пересечения прямых является точкой пересечения
отрезков, если – ложь, то отрезки не пересекаются.
6.1.2.3 Точка пересечения плоскости и прямой
Заданы:
- плоскость, проходящая через точки
()
()
()
,, , , , , , ,
iiii j jjj kkkk
Pxyz P x y z P x y z , причем, точки не коллинеарны и удовлетворяют
уравнению
0Ax By Cz D
++=;
- прямая, проходящая через точки
)
)
1111 2 222
,, , ,Pxyz иPxyz .
Что представляют собой эти точки в терминах исходных данных алгоритмов компьютерной
графики. Точки, задающие плоскость – это какие-либо три точки из всех вершин грани,
принадлежащей объекту. Элементарный вариант грани – треугольная грань, а значит в любом
случае как минимум для описания плоскости, содержащей грань, три точки в распоряжении
есть. Точки, задающие прямую – то
чки начала и конца ребра, ограничивающего какую либо
грань, которая в свою очередь принадлежит какому либо объекту. В данной ситуации
рассматриваются плоскости, содержащие грани одного объекта, а прямые, содержащие ребра,
других объектов. Конечная цель поиска точек пересечения - определения заслонения граней
одних объектов гранями других объектов.
Как известно, прямая, заданная координатами дву
х точек может быть представлена уравнением
111
cos cos cos
xyyzz
βγ
−−
==
,