VTK  9.1.0
vtkTubeFilter.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkTubeFilter.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 =========================================================================*/
164 #ifndef vtkTubeFilter_h
165 #define vtkTubeFilter_h
166 
167 #include "vtkFiltersCoreModule.h" // For export macro
168 #include "vtkPolyDataAlgorithm.h"
169 
170 #define VTK_VARY_RADIUS_OFF 0
171 #define VTK_VARY_RADIUS_BY_SCALAR 1
172 #define VTK_VARY_RADIUS_BY_VECTOR 2
173 #define VTK_VARY_RADIUS_BY_ABSOLUTE_SCALAR 3
174 #define VTK_VARY_RADIUS_BY_VECTOR_NORM 4
175 
176 #define VTK_TCOORDS_OFF 0
177 #define VTK_TCOORDS_FROM_NORMALIZED_LENGTH 1
178 #define VTK_TCOORDS_FROM_LENGTH 2
179 #define VTK_TCOORDS_FROM_SCALARS 3
180 
181 class vtkCellArray;
182 class vtkCellData;
183 class vtkDataArray;
184 class vtkFloatArray;
185 class vtkPointData;
186 class vtkPoints;
187 
188 class VTKFILTERSCORE_EXPORT vtkTubeFilter : public vtkPolyDataAlgorithm
189 {
190 public:
192  void PrintSelf(ostream& os, vtkIndent indent) override;
193 
198  static vtkTubeFilter* New();
199 
201 
204  vtkSetClampMacro(Radius, double, 0.0, VTK_DOUBLE_MAX);
205  vtkGetMacro(Radius, double);
207 
209 
212  vtkSetClampMacro(VaryRadius, int, VTK_VARY_RADIUS_OFF, VTK_VARY_RADIUS_BY_VECTOR_NORM);
213  vtkGetMacro(VaryRadius, int);
214  void SetVaryRadiusToVaryRadiusOff() { this->SetVaryRadius(VTK_VARY_RADIUS_OFF); }
218  {
219  this->SetVaryRadius(VTK_VARY_RADIUS_BY_VECTOR_NORM);
220  }
222  {
223  this->SetVaryRadius(VTK_VARY_RADIUS_BY_ABSOLUTE_SCALAR);
224  }
225  const char* GetVaryRadiusAsString();
227 
229 
232  vtkSetClampMacro(NumberOfSides, int, 3, VTK_INT_MAX);
233  vtkGetMacro(NumberOfSides, int);
235 
237 
240  vtkSetMacro(RadiusFactor, double);
241  vtkGetMacro(RadiusFactor, double);
243 
245 
249  vtkSetVector3Macro(DefaultNormal, double);
250  vtkGetVectorMacro(DefaultNormal, double, 3);
252 
254 
258  vtkSetMacro(UseDefaultNormal, vtkTypeBool);
259  vtkGetMacro(UseDefaultNormal, vtkTypeBool);
260  vtkBooleanMacro(UseDefaultNormal, vtkTypeBool);
262 
264 
269  vtkSetMacro(SidesShareVertices, vtkTypeBool);
270  vtkGetMacro(SidesShareVertices, vtkTypeBool);
271  vtkBooleanMacro(SidesShareVertices, vtkTypeBool);
273 
275 
278  vtkSetMacro(Capping, vtkTypeBool);
279  vtkGetMacro(Capping, vtkTypeBool);
280  vtkBooleanMacro(Capping, vtkTypeBool);
282 
284 
289  vtkSetClampMacro(OnRatio, int, 1, VTK_INT_MAX);
290  vtkGetMacro(OnRatio, int);
292 
294 
299  vtkSetClampMacro(Offset, int, 0, VTK_INT_MAX);
300  vtkGetMacro(Offset, int);
302 
304 
310  vtkSetClampMacro(GenerateTCoords, int, VTK_TCOORDS_OFF, VTK_TCOORDS_FROM_SCALARS);
311  vtkGetMacro(GenerateTCoords, int);
312  void SetGenerateTCoordsToOff() { this->SetGenerateTCoords(VTK_TCOORDS_OFF); }
314  {
315  this->SetGenerateTCoords(VTK_TCOORDS_FROM_NORMALIZED_LENGTH);
316  }
317  void SetGenerateTCoordsToUseLength() { this->SetGenerateTCoords(VTK_TCOORDS_FROM_LENGTH); }
318  void SetGenerateTCoordsToUseScalars() { this->SetGenerateTCoords(VTK_TCOORDS_FROM_SCALARS); }
321 
323 
329  vtkSetClampMacro(TextureLength, double, 0.000001, VTK_INT_MAX);
330  vtkGetMacro(TextureLength, double);
332 
334 
339  vtkSetMacro(OutputPointsPrecision, int);
340  vtkGetMacro(OutputPointsPrecision, int);
342 
343 protected:
345  ~vtkTubeFilter() override = default;
346 
347  // Usual data generation method
349 
350  double Radius; // minimum radius of tube
351  int VaryRadius; // controls radius variation
352  int NumberOfSides; // number of sides to create tube
353  double RadiusFactor; // maximum allowable radius
354  double DefaultNormal[3];
357  vtkTypeBool Capping; // control whether tubes are capped
358  int OnRatio; // control the generation of the sides of the tube
359  int Offset; // control the generation of the sides
360  int GenerateTCoords; // control texture coordinate generation
362  double TextureLength; // this length is mapped to [0,1) texture space
363 
364  // Helper methods
366  vtkPoints* newPts, vtkPointData* pd, vtkPointData* outPD, vtkFloatArray* newNormals,
367  vtkDataArray* inScalars, double range[2], vtkDataArray* inVectors, double maxSpeed,
368  vtkDataArray* inNormals);
369  void GenerateStrips(vtkIdType offset, vtkIdType npts, const vtkIdType* pts, vtkIdType inCellId,
370  vtkCellData* cd, vtkCellData* outCD, vtkCellArray* newStrips);
372  vtkPoints* inPts, vtkDataArray* inScalars, vtkFloatArray* newTCoords);
374 
375  // Helper data members
376  double Theta;
377 
378 private:
379  vtkTubeFilter(const vtkTubeFilter&) = delete;
380  void operator=(const vtkTubeFilter&) = delete;
381 };
382 
383 #endif
vtkPoints
represent and manipulate 3D points
Definition: vtkPoints.h:143
VTK_VARY_RADIUS_BY_SCALAR
#define VTK_VARY_RADIUS_BY_SCALAR
Definition: vtkTubeFilter.h:171
VTK_INT_MAX
#define VTK_INT_MAX
Definition: vtkType.h:155
VTK_VARY_RADIUS_OFF
#define VTK_VARY_RADIUS_OFF
Definition: vtkTubeFilter.h:170
vtkTubeFilter::RequestData
int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called by the superclass.
vtkPointData
represent and manipulate point attribute data
Definition: vtkPointData.h:142
vtkIdType
int vtkIdType
Definition: vtkType.h:332
vtkTubeFilter::VaryRadius
int VaryRadius
Definition: vtkTubeFilter.h:351
vtkFloatArray
dynamic, self-adjusting array of float
Definition: vtkFloatArray.h:145
VTK_TCOORDS_FROM_LENGTH
#define VTK_TCOORDS_FROM_LENGTH
Definition: vtkTubeFilter.h:178
vtkInformationVector
Store zero or more vtkInformation instances.
Definition: vtkInformationVector.h:145
vtkTubeFilter::GenerateTextureCoords
void GenerateTextureCoords(vtkIdType offset, vtkIdType npts, const vtkIdType *pts, vtkPoints *inPts, vtkDataArray *inScalars, vtkFloatArray *newTCoords)
vtkX3D::range
@ range
Definition: vtkX3D.h:244
vtkTubeFilter::SetVaryRadiusToVaryRadiusByVectorNorm
void SetVaryRadiusToVaryRadiusByVectorNorm()
Turn on/off the variation of tube radius with scalar value.
Definition: vtkTubeFilter.h:217
vtkTubeFilter::Theta
double Theta
Definition: vtkTubeFilter.h:376
vtkDataArray
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:159
vtkTubeFilter::OutputPointsPrecision
int OutputPointsPrecision
Definition: vtkTubeFilter.h:361
vtkTubeFilter::SetVaryRadiusToVaryRadiusByVector
void SetVaryRadiusToVaryRadiusByVector()
Turn on/off the variation of tube radius with scalar value.
Definition: vtkTubeFilter.h:216
vtkTubeFilter::Radius
double Radius
Definition: vtkTubeFilter.h:350
vtkTubeFilter::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkTubeFilter::ComputeOffset
vtkIdType ComputeOffset(vtkIdType offset, vtkIdType npts)
vtkPolyDataAlgorithm.h
vtkTubeFilter
filter that generates tubes around lines
Definition: vtkTubeFilter.h:189
vtkTubeFilter::GetGenerateTCoordsAsString
const char * GetGenerateTCoordsAsString()
Control whether and how texture coordinates are produced.
vtkTubeFilter::Offset
int Offset
Definition: vtkTubeFilter.h:359
vtkTubeFilter::GenerateTCoords
int GenerateTCoords
Definition: vtkTubeFilter.h:360
vtkTubeFilter::SetVaryRadiusToVaryRadiusOff
void SetVaryRadiusToVaryRadiusOff()
Turn on/off the variation of tube radius with scalar value.
Definition: vtkTubeFilter.h:214
VTK_VARY_RADIUS_BY_ABSOLUTE_SCALAR
#define VTK_VARY_RADIUS_BY_ABSOLUTE_SCALAR
Definition: vtkTubeFilter.h:173
vtkTubeFilter::~vtkTubeFilter
~vtkTubeFilter() override=default
vtkX3D::offset
@ offset
Definition: vtkX3D.h:444
vtkTubeFilter::SidesShareVertices
vtkTypeBool SidesShareVertices
Definition: vtkTubeFilter.h:356
vtkTubeFilter::SetVaryRadiusToVaryRadiusByAbsoluteScalar
void SetVaryRadiusToVaryRadiusByAbsoluteScalar()
Turn on/off the variation of tube radius with scalar value.
Definition: vtkTubeFilter.h:221
vtkTubeFilter::SetGenerateTCoordsToUseLength
void SetGenerateTCoordsToUseLength()
Control whether and how texture coordinates are produced.
Definition: vtkTubeFilter.h:317
vtkTubeFilter::NumberOfSides
int NumberOfSides
Definition: vtkTubeFilter.h:352
vtkTubeFilter::OnRatio
int OnRatio
Definition: vtkTubeFilter.h:358
vtkCellData
represent and manipulate cell attribute data
Definition: vtkCellData.h:142
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:113
vtkCellArray
object to represent cell connectivity
Definition: vtkCellArray.h:290
vtkTubeFilter::New
static vtkTubeFilter * New()
Construct object with radius 0.5, radius variation turned off, the number of sides set to 3,...
VTK_TCOORDS_FROM_SCALARS
#define VTK_TCOORDS_FROM_SCALARS
Definition: vtkTubeFilter.h:179
vtkTubeFilter::RadiusFactor
double RadiusFactor
Definition: vtkTubeFilter.h:353
vtkTubeFilter::SetVaryRadiusToVaryRadiusByScalar
void SetVaryRadiusToVaryRadiusByScalar()
Turn on/off the variation of tube radius with scalar value.
Definition: vtkTubeFilter.h:215
VTK_TCOORDS_OFF
#define VTK_TCOORDS_OFF
Definition: vtkTubeFilter.h:176
vtkTubeFilter::SetGenerateTCoordsToUseScalars
void SetGenerateTCoordsToUseScalars()
Control whether and how texture coordinates are produced.
Definition: vtkTubeFilter.h:318
vtkTubeFilter::GeneratePoints
int GeneratePoints(vtkIdType offset, vtkIdType npts, const vtkIdType *pts, vtkPoints *inPts, vtkPoints *newPts, vtkPointData *pd, vtkPointData *outPD, vtkFloatArray *newNormals, vtkDataArray *inScalars, double range[2], vtkDataArray *inVectors, double maxSpeed, vtkDataArray *inNormals)
vtkInformation
Store vtkAlgorithm input/output information.
Definition: vtkInformation.h:183
vtkTubeFilter::SetGenerateTCoordsToNormalizedLength
void SetGenerateTCoordsToNormalizedLength()
Control whether and how texture coordinates are produced.
Definition: vtkTubeFilter.h:313
VTK_VARY_RADIUS_BY_VECTOR
#define VTK_VARY_RADIUS_BY_VECTOR
Definition: vtkTubeFilter.h:172
VTK_VARY_RADIUS_BY_VECTOR_NORM
#define VTK_VARY_RADIUS_BY_VECTOR_NORM
Definition: vtkTubeFilter.h:174
VTK_TCOORDS_FROM_NORMALIZED_LENGTH
#define VTK_TCOORDS_FROM_NORMALIZED_LENGTH
Definition: vtkTubeFilter.h:177
vtkTubeFilter::TextureLength
double TextureLength
Definition: vtkTubeFilter.h:362
vtkTubeFilter::GetVaryRadiusAsString
const char * GetVaryRadiusAsString()
Turn on/off the variation of tube radius with scalar value.
vtkTubeFilter::GenerateStrips
void GenerateStrips(vtkIdType offset, vtkIdType npts, const vtkIdType *pts, vtkIdType inCellId, vtkCellData *cd, vtkCellData *outCD, vtkCellArray *newStrips)
vtkTubeFilter::UseDefaultNormal
vtkTypeBool UseDefaultNormal
Definition: vtkTubeFilter.h:355
VTK_DOUBLE_MAX
#define VTK_DOUBLE_MAX
Definition: vtkType.h:165
vtkTubeFilter::Capping
vtkTypeBool Capping
Definition: vtkTubeFilter.h:357
vtkTypeBool
int vtkTypeBool
Definition: vtkABI.h:69
vtkTubeFilter::vtkTubeFilter
vtkTubeFilter()
vtkTubeFilter::SetGenerateTCoordsToOff
void SetGenerateTCoordsToOff()
Control whether and how texture coordinates are produced.
Definition: vtkTubeFilter.h:312
vtkPolyDataAlgorithm
Superclass for algorithms that produce only polydata as output.
Definition: vtkPolyDataAlgorithm.h:151