00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #include <string>
00018 #include <map>
00019 #include <assert.h>
00020 #include "Evaluator.h"
00021
00022 #ifndef N_POLYEVALUATOR
00023 #define N_POLYEVALUATOR
00024
00025 namespace Fluxus
00026 {
00027
00028 class PolyPrimitive;
00029
00033 class PolyEvaluator : public Evaluator
00034 {
00035 public:
00036 PolyEvaluator(const PolyPrimitive *prim);
00037 virtual ~PolyEvaluator();
00038
00039 virtual bool IntersectLine(const dVector &start, const dVector &end, vector<Point> &points);
00040 virtual Point ClosestPoint(const dVector &position);
00041
00042 private:
00043 const PolyPrimitive *m_Prim;
00044
00045 bool IntersectTriStrip(const dVector &start, const dVector &end, vector<Point> &points);
00046 bool IntersectQuads(const dVector &start, const dVector &end, vector<Point> &points);
00047 bool IntersectTriList(const dVector &start, const dVector &end, vector<Point> &points);
00048 bool IntersectTriFan(const dVector &start, const dVector &end, vector<Point> &points);
00049 bool IntersectPolygon(const dVector &start, const dVector &end, vector<Point> &points);
00050
00051 Point InterpolatePData(dVector bary, unsigned int i1, unsigned int i2, unsigned int i3);
00052
00053 };
00054
00055 }
00056
00057 #endif