Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Звук, графика и видео > Построение однополостного гиперболоида, нужна помо


Автор: shorox 14.1.2009, 14:00
В общем то, почти всё готово, проблема вот в чём: саму фигуру выстраиваю из полигонов, так вот при вращении осей координат происходит склеивание задних и передних стенок фигуры из-за этого фигура смотрится неестественно. Пожалуйста помогите, в чём дело? Предполагаю, что не правильно реализовал вычисление расстояния от фигуры до наблюдателя, но как сделать правильно ума не хватает. Заранее спасибо!

Автор: Alexeis 14.1.2009, 14:47
  Дело в том что у вас нет отсечения невидимых граней и не реализован буфер глубины. В принципе для работы будет достаточно одного только буфера глубины, отсечение невидимых граней это уже скорее оптимизация. 

  Делается это так. Создается матрица размером как область отображения в нее будет записываться глубина залегания нарисованной точки. Теперь перед выводом любой точки нужно проверить лежит ли она выше чем та что уже нарисована. Если да то рисуем ее и в буфер глубины заносим глубину текущей точки иначе ничего не делаем. 

  Однако для такого потребуется переписывание функций Canvas.Rectangle, Canvas.LineTo, Canvas.Polygon, поскольку при отрисовке нужно знать координаты каждой точки, а эти функции не дают необходимой инфы.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)