Шаблон Poly3gon


Шаблон Poly3gon состоит из двух массивов: vertex для вершин и side для треугольных граней. Параметр шаблона V задаёт тип вершины ( например, это могут быть классы Vector3d, Vector3f, Vector3i ), а параметр I тип дополнительной информации грани ( тип void означает её отсутствие ).

template <class I> class Trigon
{
public:
    unsigned int a, b, c; // Номера вершин 
    I info;
};

template <> class Trigon<void>
{
public:
    unsigned int a, b, c; // Номера вершин 
};

template <class V, class I> class Poly3gon
{
    Poly3gon ( Poly3gon & );
public:
    DynArray<V> vertex;         // массив вершин
    DynArray< Trigon<I> > side; // массив треугольников

    Poly3gon () {}
    Poly3gon ( unsigned int nv, unsigned int ns ) : vertex(nv), side(ns) {}

    Poly3gon & resize ( unsigned int nv, unsigned int ns )
    {
        vertex.resize ( nv );
        side.resize ( ns );
        return *this;
    }
};

template <class T, class I> inline
void swap ( Poly3gon<T,I> & p1, Poly3gon<T,I> & p2 )
{
    p1.vertex.swap ( p2.vertex );
    p1.side.swap ( p2.side );
}

О векторах на плоскости смотрите здесь.
О векторах в пространстве смотрите здесь.
Описание шаблона классов DynArray находится здесь.
Исходники находятся здесь.

Наверх