Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
otvety_po_kg.doc
Скачиваний:
28
Добавлен:
26.04.2019
Размер:
1.45 Mб
Скачать
  1. Визуализация объёмных изображений. Каркасная визуализация

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

1. Каркасная визуализация («проволочная модель»).

2. Показ поверхностей в виде многогранников с плоскими гранями или сплайнов с удалением невидимых точек.

3. То же, что и для второго уровня, плюс сложное закрашивание объектов для имитации отражения света, затенения, прозрачности, использование текстур.

В порядке усложнения алгоритмов визуализации способы показа трехмерных объектов можно разделить на: 1. Каркасная модель. 2. Удаление невидимых точек. 3. Закрашивание граней с учетом освещения. 4.Имитация гладких поверхностей закрашиванием. 5. Наложение текстуры. 6. Добавление теней.

Простейшая, каркасная, визуализация часто используется в процессе редактирования объемных объектов. Визуализация второго уровня используется для упрощенного показа объемных объектов. Например, для графиков функций z=f(x,y) (в виде рельефа поверхности) часто достаточно показать все грани сетки одним цветом, зато нужно обязательно удалить невидимые точки. Это более сложная процедура в сравнении выводом каркасного изображения Сложность процесса графического вывода возрастает по мере приближения к некоторому идеалу – созданию полной иллюзии естественных, живых, реалистичных изображений. Усилия многих ученых и инженеров всего мира направлены на разработку методов и средств достижения этой цели. Здесь полнее всего ощущается связь компьютерной графики с естественными науками, с дисциплинами, посвященными изучению окружающего мира. Например, для создания реалистичных изображений нужно принимать во внимание законы оптики, которые описывают свет и тень, отражение и преломление. Компьютерная графика находится на стыке многих дисциплин и разделов науки.

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

  1. Алгебра векторов. Вычисление нормалей

Алгебра векторов. Вектором называется отрезок прямой, который соединяет некоторые точки пространства А и В. Направление вектора – от начальной точки А к конечной точке В. Радиус-вектор R – это вектор с начальной точкой в центре координат. Координатами радиус-вектора являются координаты конечной точки. Длиной радиус-вектора часто называется модулем, обозначается как |R| и вычисляется следующим образом |R|= .

Единичный вектор – это вектор, длина которого равна единице. Перечислим основные операции над векторами.

  1. Умножение вектора на число. X=Va. Результат – вектор X, длина которого в а раз больше, чем у вектора V. Если число а положительное, то направление вектора X совпадает с вектором V. При а<0 вектор X имеет противоположное вектору V направление. Если V – это радиус-вектор, то координаты вектора результата будут (ac,ay,az), т.е. каждая координата вектора увеличивается в а раз.

  2. Сложение векторов. С=А+В. Результат сложения – это вектор, который соответствует одной из диагоналей параллелограмма, стороны которого – векторы А и В.

Все три вектора лежат в одной плоскости. Для радиус- векторов А и В координаты вектора результата определяются как:

XC=XA+XB; YC=YA+YB; ZC=ZA+ZB;

Разность двух векторов С=А-В можно определить через операцию сложения С=А+(-В). Вектор разности соответствует другой диагонали параллелограмма, изображенного на рис. При вычисление радиус-векторов соответствующие координаты вычисляются:

XC=XA-XB; YC=YA-YB; ZC=ZA-ZB;

3. Скалярное произведение векторов: С=А*В. Результатом операции является число(скаляр), равное произведению длин векторов на косинус угла между ними: С=А*В=|A|*|B|*cosφ. Если А и В – это радиус – векторы, то результат можно вычислить по координатам следующим образом:

С= XA-XB+YA-YB+ZA-ZB;

  1. Векторное произведение векторов: С=АхВ. Результат операции – вектор перпендикулярный к плоскости параллелограмма, образованного сторонами векторов А и В, а длина вектора равняется площади этого параллелограмма. |C|=|A| |B| *sinφ. В случае, если векторы А и В являются радиус-векторами, координаты вектора результата С вычисляются по формулам: XC=YAZB - ZAYB; YC=YAXB - XAZB; ZC=XAYB - YAXB;

Обратите внимание на то, что AхВ=-ВхА. Другими словами, порядок множителей определяет направление вектора результата. В этом можно убедиться, если в формуле координат поменять местами координаты векторов А и В. Кроме того, направление вектора результата операции АхВ зависит и от расположения координатных осей (система координат, изображенная на рисунке называется левой.

Назовите ось y осью x, а ось x осью y (выйдет правая система), а также соответственно поменяйте местами координаты x и y векторов А и В в формуле векторного произведения. В результате такой перестановки координаты вектора С изменят знак, то есть вектор будет иметь противоположное направление.

Вычисление нормалей. Рассматривая модели отражения света, вы, наверное, обратили внимание на то, что нормаль к поверхности – важный элемент. Определение вектора нормали к поверхности в заданной точке может быть выполнено разными способами. В значительной степени это определяется типом модели описания поверхности. Для поверхностей, заданных в аналитической форме, известны методы дифференциальной геометрии, которые основываются на вычислении частных производных функций описания. Например, если поверхность задана параметрическими функциями x=x(s,t), y=y(s,t), z=z(s,t). Тогда координаты нормали можно вычислить так

XN= ; YN= ; ZN= . В случае описания поверхности векторно-полигональной моделью для определения нормалей можно использовать методы векторной алгебры. Пусть в пространстве задана некоторая многогранная поверхность. Рассмотрим одну ее плоскую грань, имеющую вид треугольника. Для вычисления координат вектора нормали воспользуемся векторным произведением любых двух векторов, которые лежат в плоскости грани. Такими векторами могут служить и ребра грани, например, ребра 1-2 и 1-3. Однако формулы для векторного произведения были определены нами только для радиус векторов. Чтобы перейти к радиус-векторам, введем новую систему координат, центр которой совпадает с вершиной 1, а оси – параллельны осям бывшей системы.

Координаты вершин в новой системе: x`=xi-x1; y`=yi-y1; z`=zi-z1; Теперь назовем ребро (1-2) вектором А, а ребро (1-3) – вектором В, как показано на рисунке.

Таким образом, положение нормали к грани в пространстве будет описываться радиус-вектором N. Его координаты в системе (x`,y`,z`) выразим формулами для векторного произведения: xN`=(y2-y1)(z3-z1)- (z2-z1)(y3-y1); yN`=(z2-z1)(x3-x1)- (x2-x1)(z3-z1); zN`=(x2-x1)(y3-y1)- (y2-y1)(x3-x1); плоская грань может быть изображена в разных ракурсах. В каждой конкретной ситуации необходимо выбирать направление нормали, которое соответствует видимой стороне грани. Если плоская грань может быть видна с обратной стороны, то тогда в расчетах отражения света необходимо выбирать для нормали обратный вектор, то есть (-N). Если полигональная поверхность имеет не треугольные грани, а, например, плоские четырехугольные, то расчет нормали можно выполнять по любым трем вершинам грани.

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