00001 #ifndef SUBDIVSCHEMEMODIFIER_H
00002 #define SUBDIVSCHEMEMODIFIER_H
00003 #include <QGLViewer/qglviewer.h>
00004 #include "QGLViewer/vec.h"
00005 #include "matrices.h"
00006 #include <qobject.h>
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 using namespace std;
00018 using namespace qglviewer;
00029 class SubdivSchemeModifier : public QGLViewer
00030 {
00031 Q_OBJECT
00032 public :
00034 SubdivSchemeModifier(QWidget *parent, const char *name);
00036 int _NbTU;
00038 int _NbTV;
00040 int _NbTW;
00042 int _HideUBelow;
00044 int _HideVBelow;
00046 int _HideWBelow;
00048 int _HideUAbove;
00050 int _HideVAbove;
00052 int _HideWAbove;
00054 int _CurrentAxis;
00056 bool*** _Activations;
00059 bool*** _ReverseNormals;
00061 SSMatrix*** _TransfoModifMatrices;
00062
00063 protected :
00065 virtual void init();
00067 virtual void draw();
00069 virtual void drawWithNames();
00071 Vec MatriceVecMultiply(SSMatrix M, Vec V);
00073 void drawTransfo(int u, int v, int w);
00075 void fastDrawQuad(Vec P1, Vec P2, Vec P3, Vec P4);
00099 RotateW();
00101 RotateV();
00103 RotateU();
00129 SymmetriseU();
00131 SymmetriseV();
00133 SymmetriseW();
00134 public slots :
00136 S_ResetSubdivSchemeModifier(int NbTU,int NbTV,int NbTW);
00138 S_Activate();
00140 S_Rotate();
00142 S_Symmetrise();
00144 S_ToggleCurrentAxis(int A);
00145 signals :
00147 void S_ActivateTransfo(int Uindice,int Vindice,int Windice);
00149 void S_RotateTransfo(int Uindice,int Vindice,int Windice,int Axis);
00151 void S_SymmetriseTransfo(int Uindice,int Vindice,int Windice,int Axis);
00152 };
00153 #endif