Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Uchebnik_po_kursu_GIO_2007_ispravlenny_s_risunk...doc
Скачиваний:
5
Добавлен:
01.07.2025
Размер:
13 Мб
Скачать
☆

13.1. Построение графика функции двух переменных. Линии горизонта

Рассмотрим задачу построения графика функции двух переменных z = f(x, у) в виде сетки координатных линий х = const и у = const.

При параллельном проектировании вдоль оси Oz проекцией вертикальной линии в объектном пространстве будет вертикальная линия на картинной плоскости (экране). Легко убедиться в том, что в этом случае точка р(х, у, z) переходит в точку ((р, е1), (р, e2)) на картинной плоскости, где

а направление проектирования имеет вид

,

где

φ [0, 2π],   ψ [-π/2, π/2].

Чаще всего применяется полигональный способ представления графика: функция приближается прямоугольной матрицей значений функции в узлах сетки, а сам график представляется наборами ломаных линий, соответствующих постоянным значениям х и у.

Рассмотрим сначала построение графика функции в виде набора линий, соответствующих постоянным значениям у, считая, что углы φ и ψ подобраны таким образом, что при y1>y2 плоскость у = y1 расположена ближе к картинной плоскости, чем плоскость у = y2.

Каждая линия семейства z = f(x, yi) лежит в своей плоскости у = yi, причем все эти плоскости параллельны и, следовательно, не могут пересекаться. Из этого следует, что при уj > yt линия z = f(x, yj) не может закрывать собой линию z = f(x, yi) и, значит, каждая линия z=f(x,yj) может быть закрыта только предыдущими линиями z = f(x, yi), I = 1,…,j-1.

Тем самым возможен следующий алгоритм построения графика функции z = f(x, y) линии рисуются в порядке удаления (возрастания у – front-to-back) и при рисовании очередной линии выводится только та ее часть, которая ранее нарисованными линиями не закрывается.

Для определения частей линии z = f(x, уk), которые не закрывают ранее нарисованных линий, вводятся так называемые линии горизонта, или контурные линии.

Изначально линии горизонта не инициализированы, поэтому первая линия выводится полностью (так как она ближе всего расположена к наблюдателю, то закрывать ее ничто не может). После этого линии горизонта инициализируются так, что в выводимых точках они совпадают с линией, выведенной первой.

Рис. 13.1.1. График двух функций БЕЗ удаления невидимых линий.

Рис. 13.1.2. График двух функций с удаленными невидимыми линиями.

Вторая линия также выводится полностью, и линии горизонта корректируются следующим образом: нижняя линия горизонта в любой из точек равна минимуму из двух уже выведенных линий, верхняя – максимуму. Рассмотрим область экрана между верхней и нижней линиями горизонта – она является проекцией части графика функции, заключенной в полосе y1 ≤ y ≤ y2, и, очевидно, находится ближе, чем все остальные линии вида z = f(x, уi), i > 2. Поэтому те части линий, которые при проектировании попадают в эту область, указанной частью графика закрываются и при данном способе проектирования не видны.

Тем самым следующая линия будет рисоваться только в тех местах, где ее проекция лежит вне области, задаваемой контурными линиями. Пусть проекцией линии z = f(x, yk) на картинную плоскость является линия Y = Yk(X), где (X, Y) – координаты на картинной плоскости, причем Y – вертикальная координата. Контурные линии Ykmax(X) и Ykmin(X) определяются следующими соотношениями:

На экране рисуются только те части линии Y = Yk (x), которые, находятся выше линии Ykmax(X) или ниже линии Ykmin(X) Такой алгоритм называется методом плавающего горизонта.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]