addColors(node. rgb): // sum the color values // суммируем значения цветов }
else
childlndex - 4 * rgb[0] + 2 * rgb[l] + rgb[2]: insertTree(childIndex. rgb):
}
Теория цвета
Как найти узел для отсечения? Создадим массив reduclble[] из семи стеков, по одному на каждый уровень дерева. В элементе массива reduc1ble[1] содержатся указатели на узлы дерева i-ro уровня, о которых известно, что они могут быть отсечены (у них больше одного потомка). Очередной цвет, добавляемый к октодереву, следует по определенному пути и/или строит новые узлы на пути к листу. В каждом посещенном узле (за исключением конечного узла - листа) количество потомков увеличивается на единицу, после чего производится проверка: если количество потомков в точности равно двум, то такой узел становится отсекаемым и указатель на него проталкивается в соответствующий стек.
Когда дерево должно быть отсечено, стеки проверяются в обратном порядке: от i - 7 к меньшим значениям i: первый непустой стек reduc1ble[1] указывает на отсекаемый узел, который затем выталкивается из стека и отсекается.
void reduceTree(void) {
thisNode - findReducibleNodeO: thisNode.isLeaf - 1:
nunteaves -- (thisNode.numChildren - 1): freeChiIdren(thisNode):
}
12.8. Дополнительная литература Глава лекций Фейнмана [Feynman, 62], посвященная цвету, прекрасно написана и является классическим введением в теорию цвета. В работе Биллмейера [ВШтеуег, 21] досконально рассматриваются технологии обработки цвета. Кроме того, у Роджерса [Rogers, 105] содержится подробное введение в теорию цвета и описывается управление цветом в компьютерной графике.
Удаление невидимых поверхностей
□ Повышение реалистичности изображений посредством удаления невидимых поверхностей сплошных объектов.
□ Изучение различных технологий удаления невидимых поверхностей.
□ Детальная разработка некоторых фундаментальных методов удаления невидимых поверхностей.
□ Разработка метода для удаления невидимых линий.
Доколе будешь скрывать лицо Твое от меня?