00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __GU_PointGroup_h__
00021 #define __GU_PointGroup_h__
00022
00023 #include "GU_API.h"
00024 #include <GEO/GEO_Point.h>
00025 #include <GEO/GEO_PointRef.h>
00026 #include "GU_Group.h"
00027 #include "GU_Detail.h"
00028
00029
00030
00031
00032
00033
00034
00035
00036 class GU_API GU_PointGroup : public GU_Group
00037 {
00038 public:
00039
00040 GU_PointGroup(const char *n, GU_Detail *gdp, unsigned mask = 0xffffffff);
00041 GU_PointGroup(GU_Detail *gdp, GB_PointGroup *ptgroup);
00042 virtual ~GU_PointGroup();
00043
00044 virtual GB_Group *newGroup(const char *name);
00045 virtual GB_Group *find(const char *name) const;
00046 virtual void destroy(void);
00047
00048
00049
00050 void generateGroup(const GU_GroupParms &parms);
00051
00052
00053 void range(int, int, int, int, int, int) const;
00054 void pattern(char *pattern, int nelements,
00055 int order) const;
00056 int boundingBox(float tx, float ty, float tz,
00057 float halfx, float halfy, float halfz,
00058 float rx, float ry, float rz);
00059 void boundingSphere(float tx, float ty, float tz,
00060 float radx, float rady, float radz)
00061 const;
00062 void boundingObject(GU_RayIntersect *rayTree) const;
00063 void boundingVolume(const GU_Detail *vgdp, fpreal iso, bool invert) const;
00064
00065 void normal(UT_Vector3 &nml, float angle) const;
00066 void backface(const UT_Vector3 &eye) const;
00067 void degenerate(bool degenerate, bool zaf, bool doOpen,
00068 float tol) const;
00069
00070 void edgeDist(GB_PointGroup *ptgroup, int depth) const;
00071
00072 protected:
00073 void buildRingZero(
00074 UT_PtrArray<UT_PtrArray<GEO_Point *> *> &ringzero)
00075 const;
00076
00077 private:
00078 GEO_PointRefArray *ptArray;
00079 const char *theName;
00080 int allPoints;
00081 };
00082
00083 #endif