VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkPolyDataSilhouette.h 00005 00006 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen 00007 All rights reserved. 00008 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00009 00010 This software is distributed WITHOUT ANY WARRANTY; without even 00011 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00012 PURPOSE. See the above copyright notice for more information. 00013 00014 =========================================================================*/ 00037 #ifndef __vtkPolyDataSilhouette_h 00038 #define __vtkPolyDataSilhouette_h 00039 00040 #include "vtkPolyDataAlgorithm.h" 00041 00042 #define VTK_DIRECTION_SPECIFIED_VECTOR 0 00043 #define VTK_DIRECTION_SPECIFIED_ORIGIN 1 00044 #define VTK_DIRECTION_CAMERA_ORIGIN 2 00045 #define VTK_DIRECTION_CAMERA_VECTOR 3 00046 00047 class vtkCamera; 00048 class vtkProp3D; 00049 class vtkTransform; 00050 class vtkPolyDataEdges; 00051 00052 class VTK_HYBRID_EXPORT vtkPolyDataSilhouette : public vtkPolyDataAlgorithm 00053 { 00054 public: 00056 static vtkPolyDataSilhouette *New(); 00057 00058 vtkTypeMacro(vtkPolyDataSilhouette,vtkPolyDataAlgorithm); 00059 void PrintSelf(ostream& os, vtkIndent indent); 00060 00062 00063 vtkSetMacro(EnableFeatureAngle,int); 00064 vtkGetMacro(EnableFeatureAngle,int); 00066 00068 00069 vtkSetMacro(FeatureAngle,double); 00070 vtkGetMacro(FeatureAngle,double); 00072 00074 00076 vtkSetMacro(BorderEdges,int); 00077 vtkGetMacro(BorderEdges,int); 00078 vtkBooleanMacro(BorderEdges,int); 00080 00082 00084 vtkSetMacro(PieceInvariant,int); 00085 vtkGetMacro(PieceInvariant,int); 00086 vtkBooleanMacro(PieceInvariant,int); 00088 00090 00092 vtkSetMacro(Direction,int); 00093 vtkGetMacro(Direction,int); 00094 void SetDirectionToSpecifiedVector() 00095 {this->SetDirection( VTK_DIRECTION_SPECIFIED_VECTOR ); } 00096 void SetDirectionToSpecifiedOrigin() 00097 {this->SetDirection( VTK_DIRECTION_SPECIFIED_ORIGIN ); } 00098 void SetDirectionToCameraVector() 00099 {this->SetDirection( VTK_DIRECTION_CAMERA_VECTOR ); } 00100 void SetDirectionToCameraOrigin() 00101 {this->SetDirection( VTK_DIRECTION_CAMERA_ORIGIN ); } 00103 00105 00109 virtual void SetCamera(vtkCamera VTK_WRAP_EXTERN*); 00110 vtkGetObjectMacro(Camera,vtkCamera VTK_WRAP_EXTERN); 00112 00114 00119 void SetProp3D(vtkProp3D VTK_WRAP_EXTERN*); 00120 vtkProp3D VTK_WRAP_EXTERN*GetProp3D(); 00122 00124 00127 vtkSetVector3Macro(Vector,double); 00128 vtkGetVectorMacro(Vector,double,3); 00130 00132 00136 vtkSetVector3Macro(Origin,double); 00137 vtkGetVectorMacro(Origin,double,3); 00139 00142 unsigned long GetMTime(); 00143 00144 protected: 00145 vtkPolyDataSilhouette(); 00146 ~vtkPolyDataSilhouette(); 00147 00148 int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *); 00149 void ComputeProjectionVector(double vector[3], double origin[3]); 00150 00151 int Direction; 00152 vtkCamera *Camera; 00153 vtkProp3D *Prop3D; 00154 vtkTransform *Transform; 00155 double Vector[3]; 00156 double Origin[3]; 00157 00158 int EnableFeatureAngle; 00159 double FeatureAngle; 00160 00161 int BorderEdges; 00162 int PieceInvariant; 00163 00164 vtkPolyDataEdges* PreComp; // precomputed data for a given point of view 00165 00166 private: 00167 vtkPolyDataSilhouette(const vtkPolyDataSilhouette&); // Not implemented. 00168 void operator=(const vtkPolyDataSilhouette&); // Not implemented. 00169 }; 00170 00171 #endif