| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Звук, графика и видео > Построение однополостного гиперболоида, нужна помо |
| Автор: shorox 14.1.2009, 14:00 |
| В общем то, почти всё готово, проблема вот в чём: саму фигуру выстраиваю из полигонов, так вот при вращении осей координат происходит склеивание задних и передних стенок фигуры из-за этого фигура смотрится неестественно. Пожалуйста помогите, в чём дело? Предполагаю, что не правильно реализовал вычисление расстояния от фигуры до наблюдателя, но как сделать правильно ума не хватает. Заранее спасибо! |
| Автор: Alexeis 14.1.2009, 14:47 |
| Дело в том что у вас нет отсечения невидимых граней и не реализован буфер глубины. В принципе для работы будет достаточно одного только буфера глубины, отсечение невидимых граней это уже скорее оптимизация. Делается это так. Создается матрица размером как область отображения в нее будет записываться глубина залегания нарисованной точки. Теперь перед выводом любой точки нужно проверить лежит ли она выше чем та что уже нарисована. Если да то рисуем ее и в буфер глубины заносим глубину текущей точки иначе ничего не делаем. Однако для такого потребуется переписывание функций Canvas.Rectangle, Canvas.LineTo, Canvas.Polygon, поскольку при отрисовке нужно знать координаты каждой точки, а эти функции не дают необходимой инфы. |