VTK  9.1.0
vtkPolyDataSilhouette.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkPolyDataSilhouette.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
67 #ifndef vtkPolyDataSilhouette_h
68 #define vtkPolyDataSilhouette_h
69 
70 #include "vtkFiltersHybridModule.h" // For export macro
71 #include "vtkPolyDataAlgorithm.h"
72 
73 class vtkCamera;
74 class vtkProp3D;
75 class vtkTransform;
76 class vtkPolyDataEdges;
77 
78 class VTKFILTERSHYBRID_EXPORT vtkPolyDataSilhouette : public vtkPolyDataAlgorithm
79 {
80 public:
85 
87  void PrintSelf(ostream& os, vtkIndent indent) override;
88 
90 
93  vtkSetMacro(EnableFeatureAngle, int);
94  vtkGetMacro(EnableFeatureAngle, int);
96 
98 
101  vtkSetMacro(FeatureAngle, double);
102  vtkGetMacro(FeatureAngle, double);
104 
106 
110  vtkSetMacro(BorderEdges, vtkTypeBool);
111  vtkGetMacro(BorderEdges, vtkTypeBool);
112  vtkBooleanMacro(BorderEdges, vtkTypeBool);
114 
116 
120  vtkSetMacro(PieceInvariant, vtkTypeBool);
121  vtkGetMacro(PieceInvariant, vtkTypeBool);
122  vtkBooleanMacro(PieceInvariant, vtkTypeBool);
124 
126  {
127  VTK_DIRECTION_SPECIFIED_VECTOR = 0,
128  VTK_DIRECTION_SPECIFIED_ORIGIN = 1,
129  VTK_DIRECTION_CAMERA_ORIGIN = 2,
130  VTK_DIRECTION_CAMERA_VECTOR = 3
131  };
132 
134 
138  vtkSetMacro(Direction, int);
139  vtkGetMacro(Direction, int);
140  void SetDirectionToSpecifiedVector() { this->SetDirection(VTK_DIRECTION_SPECIFIED_VECTOR); }
141  void SetDirectionToSpecifiedOrigin() { this->SetDirection(VTK_DIRECTION_SPECIFIED_ORIGIN); }
142  void SetDirectionToCameraVector() { this->SetDirection(VTK_DIRECTION_CAMERA_VECTOR); }
143  void SetDirectionToCameraOrigin() { this->SetDirection(VTK_DIRECTION_CAMERA_ORIGIN); }
145 
147 
152  virtual void SetCamera(vtkCamera VTK_WRAP_EXTERN*);
153  vtkGetObjectMacro(Camera, vtkCamera VTK_WRAP_EXTERN);
155 
157 
164  void SetProp3D(vtkProp3D VTK_WRAP_EXTERN*);
165  vtkProp3D VTK_WRAP_EXTERN* GetProp3D();
167 
169 
174  vtkSetVector3Macro(Vector, double);
175  vtkGetVectorMacro(Vector, double, 3);
177 
179 
184  vtkSetVector3Macro(Origin, double);
185  vtkGetVectorMacro(Origin, double, 3);
187 
192  vtkMTimeType GetMTime() override;
193 
194 protected:
197 
199  void ComputeProjectionVector(double vector[3], double origin[3]);
200 
205  double Vector[3];
206  double Origin[3];
207 
209  double FeatureAngle;
210 
213 
214  vtkPolyDataEdges* PreComp; // precomputed data for a given point of view
215 
216 private:
218  void operator=(const vtkPolyDataSilhouette&) = delete;
219 };
220 
221 #endif
a virtual camera for 3D rendering
Definition: vtkCamera.h:155
a simple class to control print indentation
Definition: vtkIndent.h:113
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
Superclass for algorithms that produce only polydata as output.
sort polydata along camera view direction
void SetDirectionToSpecifiedVector()
Specify how view direction is computed.
void SetDirectionToCameraOrigin()
Specify how view direction is computed.
~vtkPolyDataSilhouette() override
vtkProp3D VTK_WRAP_EXTERN * GetProp3D()
Specify a transformation matrix (via the vtkProp3D::GetMatrix() method) that is used to include the e...
static vtkPolyDataSilhouette * New()
Instantiate object.
vtkPolyDataEdges * PreComp
void SetDirectionToCameraVector()
Specify how view direction is computed.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void SetProp3D(vtkProp3D VTK_WRAP_EXTERN *)
Specify a transformation matrix (via the vtkProp3D::GetMatrix() method) that is used to include the e...
vtkMTimeType GetMTime() override
Return MTime also considering the dependent objects: the camera and/or the prop3D.
int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called by the superclass.
void ComputeProjectionVector(double vector[3], double origin[3])
void SetDirectionToSpecifiedOrigin()
Specify how view direction is computed.
virtual void SetCamera(vtkCamera VTK_WRAP_EXTERN *)
Specify a camera that is used to define the view direction.
represents an 3D object for placement in a rendered scene
Definition: vtkProp3D.h:93
describes linear transformations via a 4x4 matrix
Definition: vtkTransform.h:164
@ vector
Definition: vtkX3D.h:243
int vtkTypeBool
Definition: vtkABI.h:69
vtkTypeUInt32 vtkMTimeType
Definition: vtkType.h:287