Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #71, ОКТЯБРЬ 2006 г.

бирюльки

АНТОН ПАЛАГИН AKA TONY

Спецвыпуск: Хакер, номер #071, стр. 071-008-3


ЛИСТИНГ

определение элемента (узла) графа

template< class T >

struct Graph

{

T elem; //Текущий элемент

std::list< Graph *> edges; //Указатели на связанные элементы графа

};

[бинарное дерево,]

оно же двоичное дерево. Часто используется в алгоритмах поиска. Каждый узел в дереве формирует свое поддерево. У каждого узла может быть только два дочерних узла — правый и левый. Соответственно, каждый узел (за исключением конечных, самых нижних узлов) такого дерева имеет одно входящее и два исходящих ребра. Главным алгоритмом для деревьев является алгоритм его обхода (Traverse), который позволяет найти наиболее оптимальный маршрут к нужным данным. Бинарное дерево лежит в основе алгоритма отбрасывания невидимых полигонов BSP (binary space partitioning), используемого в играх. Аналогично двунаправленному списку, каждая вершина бинарного дерева ссылается на правый и левый элементы, но в случае дерева эти элементы являются дочерними для узла, а не равноправными, как в случае списка.

ЛИСТИНГ

определение элемента (узла) бинарного дерева

template< class T >

struct BiTree

{

T elem; //Текущий элемент

BiTree * left; //Указатель на левый дочерний элемент

BiTree * right; //Указатель на правый дочерний элемент

};

[октарное дерево,]

оно же octree. Это способ разбиения трехмерного пространства (space partitioning), который используется при разработке игр для отбрасывания объектов, не попадающих в поле зрения камеры (frustum camera's view). Из названия понятно, что узел такого дерева имеет восемь дочерних элементов. Суть метода заключается в том, что трехмерный куб (пространство) бьется на восемь меньших равных кубов. Каждый подкуб бьется еще на восемь меньших и т.д. Таким образом получается октарное дерево, каждый узел которого имеет восемь дочерних элементов. Если перейти от трехмерного пространства к двухмерному, то может быть использовано не октарное, а квадовое дерево. То есть квадрат разбивается на четыре части (как бы половинка октарного дерева). В структуре, определяющей узел октарного дерева, достаточно поменять число 8 на 4, чтобы перейти от октарного к квадовому.

ЛИСТИНГ

определение элемента (узла) октарного дерева

template< class T >

struct OcTree

{

T elem; //Текущий элемент

OcTree * childs[8]; //Дочерние элементы

};

WWW.SGI.COM/TECH/STL/INDEX.HTML

РУКОВОДСТВО ДЛЯ ПРОГРАММИСТА ПО STL (НА АНГЛИЙСКОМ)

HTTP://RU.WIKIPEDIA.ORG/WIKI/СПИСОК_СТРУКТУР_ДАННЫХ

ЧТО ДУМАЕТ ПО ПОВОДУ СТРУКТУРЫ ДАННЫХ ВИКПЕДИЯ

WWW.ALLMATH.RU/GRAF.ZIP

ГРАФОМАНИЯ

WWW.GAMEMAKER.WEBSERVIS.RU/ARTICLES/OCTREE/OCTREE.HTM

ПОЗНАВАТЕЛЬНО ОБ OCTREE

АНАЛОГОМ СИ-МАССИВА ЯВЛЯЕТСЯ КОНТЕЙНЕР STL VECTOR

ПРАВИЛЬНЫЙ ВЫБОР КОНТЕЙНЕРА, ХРАНЯЩЕГО ТВОИ ДАННЫЕ, ГАРАНТИРУЕТ ЭФФЕКТИВНОЕ И БЕЗОПАСНОЕ ВЫПОЛНЕНИЕ КОДА

СТЕК ПОХОЖ НА ЖЕНСКИЙ ЧУЛОК, В КОТОРОМ ХРАНЯТСЯ ЛУКОВИЦЫ

Назад на стр. 071-008-2  Содержание