00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00044
#ifndef __vtkImplicitBoolean_h
00045
#define __vtkImplicitBoolean_h
00046
00047
#include "vtkImplicitFunction.h"
00048
00049
class vtkImplicitFunctionCollection;
00050
00051 #define VTK_UNION 0
00052 #define VTK_INTERSECTION 1
00053 #define VTK_DIFFERENCE 2
00054 #define VTK_UNION_OF_MAGNITUDES 3
00055
00056 class VTK_FILTERING_EXPORT vtkImplicitBoolean :
public vtkImplicitFunction
00057 {
00058
public:
00059 vtkTypeRevisionMacro(vtkImplicitBoolean,
vtkImplicitFunction);
00060
void PrintSelf(ostream& os,
vtkIndent indent);
00061
00063
static vtkImplicitBoolean *
New();
00064
00066
00068
float EvaluateFunction(
float x[3]);
00069 float EvaluateFunction(
float x,
float y,
float z)
00070 {
return this->
vtkImplicitFunction::EvaluateFunction(x, y, z); } ;
00072
00074
void EvaluateGradient(
float x[3],
float g[3]);
00075
00077
unsigned long GetMTime();
00078
00080
void AddFunction(
vtkImplicitFunction *in);
00081
00083
void RemoveFunction(
vtkImplicitFunction *in);
00084
00086 vtkImplicitFunctionCollection *GetFunction() {
return this->FunctionList;};
00087
00089
00090 vtkSetClampMacro(OperationType,
int,VTK_UNION,VTK_UNION_OF_MAGNITUDES);
00091 vtkGetMacro(OperationType,
int);
00092 void SetOperationTypeToUnion()
00093 {this->SetOperationType(
VTK_UNION);};
00094 void SetOperationTypeToIntersection()
00095 {this->SetOperationType(
VTK_INTERSECTION);};
00096 void SetOperationTypeToDifference()
00097 {this->SetOperationType(
VTK_DIFFERENCE);};
00098 void SetOperationTypeToUnionOfMagnitudes()
00099 {this->SetOperationType(
VTK_UNION_OF_MAGNITUDES);};
00100
const char *GetOperationTypeAsString();
00102
00103
protected:
00104 vtkImplicitBoolean();
00105 ~vtkImplicitBoolean();
00106
00107 vtkImplicitFunctionCollection *FunctionList;
00108
00109 int OperationType;
00110
00111
private:
00112 vtkImplicitBoolean(
const vtkImplicitBoolean&);
00113
void operator=(
const vtkImplicitBoolean&);
00114 };
00115
00117 inline const char *
vtkImplicitBoolean::GetOperationTypeAsString(
void)
00118 {
00119
if ( this->
OperationType ==
VTK_UNION )
00120 {
00121
return "Union";
00122 }
00123
else if ( this->
OperationType ==
VTK_INTERSECTION )
00124 {
00125
return "Intersection";
00126 }
00127
else if ( this->
OperationType ==
VTK_DIFFERENCE )
00128 {
00129
return "Difference";
00130 }
00131
else
00132 {
00133
return "UnionOfMagnitudes";
00134 }
00135 }
00136
00137
#endif
00138
00139