Шаг 62.
Основы компьютерной графики. Методы и алгоритмы трехмерной графики. Модели описания поверхностей. Равномерная сетка

    На этом шаге мы рассмотрим особенности этой модели.

    Эта модель описывает координаты отдельных точек поверхности следующим способом (рисунок 1).


Рис.1. Узлы равномерной сетки

    Каждому узлу сетки с индексами (i, j) приписывается значение высоты zij. Индексам (i, j) отвечают определенные значения координат (x, y). Расстояние между узлами одинаковое - dx по оси x и dy по оси y.

    Фактически, такая модель - двумерный массив, растр, матрица, каждый элемент которой сохраняет значение высоты.

    Не каждая поверхность может быть представлена этой моделью. Если в каждом узле записывается только одно значение высоты, то это означает, что поверхность описывается однозначной функцией z = f (x, y). Иначе говоря, это такая поверхность, которую любая вертикаль пересекает только один раз. Не могут моделироваться также вертикальные грани. Необходимо заметить, что для сетки не обязательно использовать только декартовые координаты. Например, для того чтобы описать поверхность шара однозначной функцией, можно использовать полярные координаты. Равномерная сетка часто используется для описания рельефа земной поверхности.

    Рассмотрим, как можно вычислить значения высоты для любой точки внутри границ сетки. Пусть ее координаты равны (x, y). Надо найти соответствующее значение z. Решением такой задачи является интерполяция значений координат z ближайших узлов (рисунок 2).


Рис.2. Точка в сетке с координатами (x, y, z)

    Сначала необходимо вычислить индексы j и i одного из узлов:

где [а] - целая часть числа а, то есть наибольшее целое, которое не превышает а.

    Далее используем, например, линейную интерполяцию. Для этого сначала найдем значения z в точках А и В. Из пропорции:

учитывая, что xj+1- xj = dx, получим zA =zi,j + (x - xj)(zi,j+1 - zij)/dx.

    Аналогично найдем zB: zB = zi+1,j + (x - xy)(zi+1,j+1 - zi+1,j)/dx.

    Теперь можно найти нужное значение z, поделив отрезок АВ пропорционально значению y:

    Получим z = zA + (у -yi)(zB - zA)/dy.

    Положительные черты равномерной сетки:

    Недостатки равномерной сетки:

    На следующем шаге мы рассмотрим неравномерную сетку.




Предыдущий шаг Содержание Следующий шаг