00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef __BUTTERFLYSUBDIVISION_H__
00010 #define __BUTTERFLYSUBDIVISION_H__
00011
00012 #include "libgm/gm.h"
00013 #include "Subdiv/Subdiv.h"
00014 #include "mesh/indexEdge.h"
00015 #include "mesh/indexFace.h"
00016 #include "mesh/mesh.h"
00017
00018 class ButterflySubdivision : public Subdivision {
00019
00020 private:
00021
00022 double weight;
00023
00024 int getOpposingVertexInfo(gmVector3&,
00025 gmVector3&,
00026 indexEdge*,
00027 indexFace*,
00028 U32);
00029
00030
00031 virtual void divideEdge(gmVector3&,
00032 gmVector3&,
00033 indexEdge*,
00034 indexFace*,
00035 U32);
00036
00037 void divideFace(indexFace*, Mesh*);
00038
00039
00040 public:
00041 ButterflySubdivision(double w=0.0);
00042
00043 void subdivide(Mesh*, U32);
00044 virtual void compute(int n);
00045 virtual int matrix(int* n, double *s) { return 0; }
00046
00047 };
00048
00049 #endif