#define nat16 unsigned __int16 template <nat16 N> class Vertex : public ShevItem { public: Vertex * vertex[N]; // указатели на соседние вершины nat16 nfacet[N]; // номера образующих граней Double<N> coor; // координаты данной вершины double data; // дополнительная информация Vertex * tmp1, * tmp2; // служебные переменные Vertex & operator += ( const Double<N> & p ) { coor += p; return *this; } Vertex & operator -= ( const Double<N> & p ) { coor -= p; return *this; } Vertex & operator *= ( const Double<N> & p ) { coor *= p; return *this; } }; template <nat16 N> class WireModel // N-мерный многограник { void separat ( const Double<N+1> & g, List< Vertex<N> > & temp ); void newVert ( List< Vertex<N> > & temp1, List< Vertex<N> > & temp2, List< Vertex<N> > & stor ); void newLink ( List< Vertex<N> > & list ); nat16 count; public: List< Vertex<N> > vlist; WireModel & simplex ( double d, List< Vertex<N> > & stor ); WireModel & cut ( const Double<N+1> & g, List< Vertex<N> > & stor ); WireModel & cut ( const Double<N+1> & g, List< Vertex<N> > & stor, WireModel & part ); }; template <nat16 N> bool copy ( const WireModel<N> & a, WireModel<N> & b, List< Vertex<<N> > & stor, DynArrRef< SortItem <const Vertex<N> *, Vertex<N> *> > & buf ); Многогранник представляет собой список вершин (Vertex), которые имеют между собой связи ( массив указателей vertex ).
Кроме того каждая вершина содержит массив номеров образующих гиперграней ( nfacet ),
собственные координаты ( coor ), поле data для дополнительной информации и служебные переменные tmp1 и tmp2.
Описание шаблона классов DynArrRef находится здесь.
Исходники находятся в файле WireModel.h. Наверх |