Основы компьютерной графики для программистов. Казанцев А.В. - 14 стр.

UptoLike

Составители: 

Основы компьютерной графики для программистов 14
____________________________________________________________________________________________________________________
http://www.ksu.ru/persons/9134.ru.html
плоскостью и содержащем начало координат, функция
(
)
zyxf ,,
отрицательна, а для
точек, лежащих в другом полупространстве, как, например, для точки
a на рисунке,
она положительна. В общем же случае необходимо учитывать направление вектора
нормали.
Свойство сохранения знака функции
()
zyxf ,,
удобно использовать в
алгоритмах удаления невидимых
ребер и граней для определения
того, лежат ли точки по одну
сторону от плоской грани или нет.
Для этого достаточно лишь
подставить значения координат
точек в функциональное
представление плоскости,
определяемой соответствующей
гранью, и проверить, совпадают
знаки функции или нет.
Аналогичные рассуждения можно
провести и
для более простого
случая прямой на плоскости. Тогда
для любой точки на плоскости можно определить ее нахождение в одной из
полуплоскостей, на которые прямая делит плоскость. Это свойство используется в
следующем примере.
Рассмотрим методы решения классической задачи определения принадлежности точки
внутренней или граничной области треугольника на плоскости. Эта задача имеет,
конечно
, много решений, некоторые из которых может придумать и сам читатель.
Здесь приводится четыре из более чем двадцати методов решения этой задачи,
известных автору. Лучшим из них может считаться метод, допускающий самую
быструю программную реализацию, и в первую очередь это относится к минимизации
количества операций умножения и
деления, не говоря уже
о
трансцендентных функциях, вроде
квадратного корня или
тригонометрических функций, для
вычисления которых требуется
разложение в ряд. В начале
рассмотрим один из известных
методов решения этой задачи.
Пусть на плоскости
xOy заданы три
точки
(
)
(
)
yxyx
BBBAAA ,,, =
=
и
(
)
yx
CCC ,
=
, образующие
треугольник (рис. 10). Через каждую
пару вершин треугольника можно провести прямую. Ограниченная часть плоскости,
образованная этими прямыми, есть внутренняя область треугольника. Если вектор
нормали к прямой
()
ML,=n , то можно записать уравнение прямой на плоскости в
виде: 0
=
++ NMyLx . По знаку функции
(
)
NMyLxyxf
+
+
=
,
можно определить
нахождение произвольной точки с координатами
(
)
yx, в той или иной полуплоскости
относительно данной прямой. Идея первого метода состоит в том, чтобы записать
Рис. 9. Представление плоскости как функции трех
переменных.
Рис. 10. Внутренняя область треугольника
соответствует отрицательным направлениям
векторов нормалей.
Основы компьютерной графики для программистов                                                                  14
____________________________________________________________________________________________________________________



плоскостью и содержащем начало координат, функция f ( x, y, z ) отрицательна, а для
точек, лежащих в другом полупространстве, как, например, для точки a на рисунке,
она положительна. В общем же случае необходимо учитывать направление вектора
нормали.
Свойство сохранения знака функции
 f ( x, y, z ) удобно использовать в
алгоритмах удаления невидимых
ребер и граней для определения
того, лежат ли точки по одну
сторону от плоской грани или нет.
Для         этого   достаточно    лишь
подставить значения координат
точек            в     функциональное
представление                плоскости,
определяемой          соответствующей
гранью, и проверить, совпадают
знаки          функции     или     нет.
Аналогичные рассуждения можно
                                        Рис. 9. Представление плоскости как функции трех
провести и для более простого                              переменных.
случая прямой на плоскости. Тогда
для любой точки на плоскости можно определить ее нахождение в одной из
полуплоскостей, на которые прямая делит плоскость. Это свойство используется в
следующем примере.
Рассмотрим методы решения классической задачи определения принадлежности точки
внутренней или граничной области треугольника на плоскости. Эта задача имеет,
конечно, много решений, некоторые из которых может придумать и сам читатель.
Здесь приводится четыре из более чем двадцати методов решения этой задачи,
известных автору. Лучшим из них может считаться метод, допускающий самую
быструю программную реализацию, и в первую очередь это относится к минимизации
                                             количества операций умножения и
                                             деления,    не   говоря   уже    о
                                             трансцендентных функциях, вроде
                                             квадратного        корня      или
                                             тригонометрических функций, для
                                             вычисления     которых   требуется
                                             разложение в ряд. В начале
                                             рассмотрим один из известных
                                             методов решения этой задачи.
                                                                   Пусть на плоскости xOy заданы три
         Рис. 10. Внутренняя область треугольника
        соответствует отрицательным направлениям                   точки    A = (Ax , Ay ), B = (Bx , B y ) и
                                                                   C = (C x , C y ) ,
                     векторов нормалей.
                                                                                                    образующие
                                                треугольник (рис. 10). Через каждую
пару вершин треугольника можно провести прямую. Ограниченная часть плоскости,
образованная этими прямыми, есть внутренняя область треугольника. Если вектор
нормали к прямой n = (L, M ) , то можно записать уравнение прямой на плоскости в
виде: Lx + My + N = 0 . По знаку функции f ( x, y ) = Lx + My + N можно определить
нахождение произвольной точки с координатами ( x, y ) в той или иной полуплоскости
относительно данной прямой. Идея первого метода состоит в том, чтобы записать


http://www.ksu.ru/persons/9134.ru.html