1 / 8

Алгоритмы трёхмерной графики

Алгоритмы трёхмерной графики. Алгоритмы трёхмерного отсечения, алгоритм плавающего горизонта. Трёхмерное отсечение многоугольника. Отсечение прямоугольным параллелепипедом Отсечение усечённой пирамидой Побитовое представление расположение точки. Трёхмерное отсечение многоугольника.

malo
Download Presentation

Алгоритмы трёхмерной графики

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Алгоритмы трёхмерной графики Алгоритмы трёхмерного отсечения, алгоритм плавающего горизонта

  2. Трёхмерное отсечение многоугольника • Отсечение прямоугольным параллелепипедом • Отсечение усечённой пирамидой • Побитовое представление расположение точки

  3. Трёхмерное отсечение многоугольника • Отсечение выпуклой многогранной областью • Выпуклый многогранник = пересечение полупространств, образованных гранями многогранной области Алгоритм Сазерленда-Ходгмана { p[1..n]– многоугольник, sp – полупространство, inp(p,sp)– лежит ли точка p в полупространстве sp, add – добавление вершины в новый многоугольник} p[0]:=p[n]; ci := inp(p[n],sp); for i:=1 to n do begin nci := inp(p[i],sp); if nci <> ci then begin newp:=intersect(p[i-1],p[i],sp); add(newp); end; if nci then add(p[i]); ci := nci; end;

  4. Алгоритм плавающего горизонта Удаление невидимых линий трёхмерного представления функции, описывающих поверхность в виде F(x, y, z) = 0 • Изображение поверхности сводится к изображению последовательности секущих при постоянных значениях z. • F(x, y, z) = 0приводится к виду y=f(x,z)или x=g(y,z) • Удаление невидимой линии: • Если для текущего значения z,при некотором x значение yбольше значений yдля всех предыдущих кривых при том же x, то текущая кривая видима в точке (x, y), иначе – не видима. • Добавляется «нижний» горизонт

  5. Алгоритм плавающего горизонта • Плавающий горизонт – два массива (по значениям x), задающих минимальное и максимальное значения y при различных z. • Зазубренные боковые рёбра. Чтобы их избежать, добавляют мнимые боковые рёбра

  6. Алгоритм Робертса На входе – n тел. Требуется отрисовать их с удалением невидимых линий • Определение нелицевых граней для каждого тела. Из каждого тела удаляются те рёбра и грани, которые экранируются самим телом. • Определение и удаление невидимых рёбер.Каждое из видимых рёбер каждого тела сравнивается с каждым из оставшихся тел для выделения видимой части. • Сложность алгоритма растёт как квадрат от количества тел. • Работает в объектном пространстве. • Требуется, чтобы все тела были выпуклы. • Тело представляется набором плоскостей – своих граней.

  7. Алгоритм Робертса • Грани задаются коэффициентами уравнения a x + b y + c z + d = 0. • Всё тело – матрицей размера 4 x n.

  8. Алгоритм Кэтмула • Работает в пространстве изображения. • Использует z-буфер.

More Related