www.pudn.com > ReadingPeopleTracker-1.28.rar > PointVector.h
// PointVector.h
//
// A Class for manipulating a vector of n Points
// stored as a vector of 2n realnos
//
#ifndef __POINT_VECTOR_H__
#define __POINT_VECTOR_H__
#include "Point2.h"
#include "NagVector.h"
namespace ReadingPeopleTracker
{
class PointVector : public NagVector
{
protected:
unsigned int no_points;
public:
PointVector() : NagVector(0,1024) { no_points = 0; } // FIXME: size???
PointVector(unsigned int n) : NagVector(2*n) { no_points = n; }
~PointVector() { }
void add_point(const Point2 &pnt)
{
add(pnt.x);
add(pnt.y);
no_points++;
}
Point2 *pop() { size -= 2; return &(point_data()[no_points--]); }
Point2 *last() { return &(point_data()[no_points-1]); }
Point2 *first() { return point_data(); }
inline Point2 *point_data() const { return (Point2*) data; }
inline Point2 *end_data() const { return &(point_data()[no_points]); }
int get_no_points() { return no_points; }
PointVector &operator=(PointVector &original)
{
no_points = original.no_points;
NagVector::operator= (original);
return *this;
}
// utility functions
void map(const realno &ax, const realno &ay, PointVector &result);
};
} // namespace ReadingPeopleTracker
#endif