Методическое пособие по курсу "Интерактивные графические системы". Найханов В.В - 33 стр.

UptoLike

e
2
= (sin
ϕ
sin
ψ
, -cos
ϕ
sin
ψ
, cos
ψ
),
а направление проектирования имеет вид
e
3
= (sin ϕ cos ψ , -cos
ϕ
cos
ψ
, -sin
ψ
),
где
[]
ϕ
π
02,
,
ψ
ππ
∈−
22
,
.
Рассмотрим сначала построение графика функции в виде набора
линий, соответствующих постоянным значениям y, считая, что углы
ϕ
и
ψ
подобраны таким образом, что при y
1
<y
2
плоскость у = у
1
расположена
ближе к картинной плоскости, чем плоскость у = у
2
.
Заметим, что каждая линия семейства z = f (x, y
i
) лежит в своей
плоскости y = y
i
, причем все эти плоскости параллельны и, следовательно,
не могут пересекаться. Из этого следует, что при y
j
>y
i
линия z = f (x, y
j
) не
может закрывать линию z = f (x, y
i
).
3.2 Удаление невидимых линий.
3.2.1 Метод плавающего горизонта.
Алгоритм построения графика функции z = f (x, y) когда линии
рисуются в порядке удаления (возрастания у) и при рисовании очередной
линии рисуется только та ее часть, которая не закрывается ранее
нарисованными линиями такой алгоритм называется методом
плавающего
горизонта
.
Для определения частей линии z = f (x, y
k
), которые не закрывают
ранее нарисованные линии, вводятся так называемые линии горизонта, или
контурные линии.
Пусть проекцией линии z = f (x, y
k
) на картинную плоскость является
линия Y = Y
k
(X), где (X, Y) - координаты на картинной плоскости, причем Y
соответствует вертикальной координате. Контурные линии Y
k
max
(X) и
Y
k
min
(X) определяются следующими соотношениями:
Y
k
max
(X) = max
11≤≤ ik
Y
i
(X),
Y
k
min
(X) = min
11≤≤ ik
Y
i
(X).
На экране рисуются только те части линии Y = Y
k
(X), которые
находятся выше линии Y
k
max
(X) или ниже линии Y
k
min
(X) (рис 3.1) .
Одной из наиболее простых и эффективных реализаций данного
метода является растровая реализация, при которой в области задания
исходной функции вводится сетка
{
(x
i
, y
j
), i = 1,...,n
1
, j = 1,...,n
2
}
и каждая из линий Y = Y
k
(X) представляется в виде ломаной. Для рисования
сегментов этой ломаной используется модифицированный алгоритм
Брезенхейма, который перед выводом очередного пиксела сравнивает его
ординату с верхней и нижней контурными линиями, представляющими
собой в этом случае массивы значений ординат. Случай отрезков с угловым
коэффициентом большим 1 требует специальной обработки (для того,
чтобы не появлялись выпадающие
пикселы).
      e2 = (sin ϕ sin ψ , -cos ϕ sin ψ , cos ψ ),
а направление проектирования имеет вид
      e3 = (sin ϕ cos ψ , -cos ϕ cos ψ , -sin ψ ),
                        ⎡ π π⎤
где ϕ ∈ [0 ,2π ] , ψ ∈ ⎢− , ⎥ .
                               ⎣ 2 2⎦
     Рассмотрим сначала построение графика функции в виде набора
линий, соответствующих постоянным значениям y, считая, что углы ϕ и ψ
подобраны таким образом, что при y1yi линия z = f (x, yj) не
может закрывать линию z = f (x, yi).


                               3.2 Удаление невидимых линий.

                     3.2.1 Метод плавающего горизонта.
       Алгоритм построения графика функции z = f (x, y) когда линии
рисуются в порядке удаления (возрастания у) и при рисовании очередной
линии рисуется только та ее часть, которая не закрывается ранее
нарисованными линиями такой алгоритм называется методом плавающего
горизонта.
       Для определения частей линии z = f (x, yk), которые не закрывают
ранее нарисованные линии, вводятся так называемые линии горизонта, или
контурные линии.
       Пусть проекцией линии z = f (x, yk) на картинную плоскость является
линия Y = Yk(X), где (X, Y) - координаты на картинной плоскости, причем Y
соответствует вертикальной координате. Контурные линии Ykmax(X) и
Ykmin(X) определяются следующими соотношениями:
       Ykmax(X) = max Yi(X),
                 1≤ i ≤ k −1
        k
      Y min(X) = min Yi(X).
                 1≤ i ≤ k −1

     На экране рисуются только те части линии Y = Yk(X), которые
находятся выше линии Ykmax(X) или ниже линии Ykmin(X) (рис 3.1) .
     Одной из наиболее простых и эффективных реализаций данного
метода является растровая реализация, при которой в области задания
исходной функции вводится сетка
     { (xi, yj), i = 1,...,n1, j = 1,...,n2 }
и каждая из линий Y = Yk(X) представляется в виде ломаной. Для рисования
сегментов этой ломаной используется модифицированный алгоритм
Брезенхейма, который перед выводом очередного пиксела сравнивает его
ординату с верхней и нижней контурными линиями, представляющими
собой в этом случае массивы значений ординат. Случай отрезков с угловым
коэффициентом большим 1 требует специальной обработки (для того,
чтобы не появлялись выпадающие пикселы).