vtkPolyDataNormals.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00048 #ifndef __vtkPolyDataNormals_h
00049 #define __vtkPolyDataNormals_h
00050
00051 #include "vtkPolyDataToPolyDataFilter.h"
00052
00053 class vtkFloatArray;
00054 class vtkIdList;
00055 class vtkPolyData;
00056
00057 class VTK_GRAPHICS_EXPORT vtkPolyDataNormals : public vtkPolyDataToPolyDataFilter
00058 {
00059 public:
00060 vtkTypeRevisionMacro(vtkPolyDataNormals,vtkPolyDataToPolyDataFilter);
00061 void PrintSelf(ostream& os, vtkIndent indent);
00062
00066 static vtkPolyDataNormals *New();
00067
00069
00072 vtkSetClampMacro(FeatureAngle,float,0.0,180.0);
00073 vtkGetMacro(FeatureAngle,float);
00075
00077
00078 vtkSetMacro(Splitting,int);
00079 vtkGetMacro(Splitting,int);
00080 vtkBooleanMacro(Splitting,int);
00082
00084
00085 vtkSetMacro(Consistency,int);
00086 vtkGetMacro(Consistency,int);
00087 vtkBooleanMacro(Consistency,int);
00089
00091
00092 vtkSetMacro(ComputePointNormals,int);
00093 vtkGetMacro(ComputePointNormals,int);
00094 vtkBooleanMacro(ComputePointNormals,int);
00096
00098
00099 vtkSetMacro(ComputeCellNormals,int);
00100 vtkGetMacro(ComputeCellNormals,int);
00101 vtkBooleanMacro(ComputeCellNormals,int);
00103
00105
00109 vtkSetMacro(FlipNormals,int);
00110 vtkGetMacro(FlipNormals,int);
00111 vtkBooleanMacro(FlipNormals,int);
00113
00115
00118 vtkSetMacro(NonManifoldTraversal,int);
00119 vtkGetMacro(NonManifoldTraversal,int);
00120 vtkBooleanMacro(NonManifoldTraversal,int);
00122
00123 protected:
00124 vtkPolyDataNormals();
00125 ~vtkPolyDataNormals() {};
00126
00127
00128 void Execute();
00129
00130 float FeatureAngle;
00131 int Splitting;
00132 int Consistency;
00133 int FlipNormals;
00134 int NonManifoldTraversal;
00135 int ComputePointNormals;
00136 int ComputeCellNormals;
00137 int NumFlips;
00138
00139 private:
00140 vtkIdList *Wave;
00141 vtkIdList *Wave2;
00142 vtkIdList *CellIds;
00143 vtkIdList *Map;
00144 vtkPolyData *OldMesh;
00145 vtkPolyData *NewMesh;
00146 int *Visited;
00147 vtkFloatArray *PolyNormals;
00148 float CosAngle;
00149
00150
00151
00152 void TraverseAndOrder(void);
00153
00154
00155
00156
00157 void MarkAndSplit(vtkIdType ptId);
00158
00159 private:
00160 vtkPolyDataNormals(const vtkPolyDataNormals&);
00161 void operator=(const vtkPolyDataNormals&);
00162 };
00163
00164 #endif