|
#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. Наверх |