VTK  9.1.0
vtkGlyph3D.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkGlyph3D.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 =========================================================================*/
189 #ifndef vtkGlyph3D_h
190 #define vtkGlyph3D_h
191 
192 #include "vtkFiltersCoreModule.h" // For export macro
193 #include "vtkPolyDataAlgorithm.h"
194 
195 #define VTK_SCALE_BY_SCALAR 0
196 #define VTK_SCALE_BY_VECTOR 1
197 #define VTK_SCALE_BY_VECTORCOMPONENTS 2
198 #define VTK_DATA_SCALING_OFF 3
199 
200 #define VTK_COLOR_BY_SCALE 0
201 #define VTK_COLOR_BY_SCALAR 1
202 #define VTK_COLOR_BY_VECTOR 2
203 
204 #define VTK_USE_VECTOR 0
205 #define VTK_USE_NORMAL 1
206 #define VTK_VECTOR_ROTATION_OFF 2
207 #define VTK_FOLLOW_CAMERA_DIRECTION 3
208 
209 #define VTK_INDEXING_OFF 0
210 #define VTK_INDEXING_BY_SCALAR 1
211 #define VTK_INDEXING_BY_VECTOR 2
212 
213 class vtkTransform;
214 
215 class VTKFILTERSCORE_EXPORT vtkGlyph3D : public vtkPolyDataAlgorithm
216 {
217 public:
219  void PrintSelf(ostream& os, vtkIndent indent) override;
220 
227  static vtkGlyph3D* New();
228 
235  void SetSourceData(vtkPolyData* pd) { this->SetSourceData(0, pd); }
236 
243  void SetSourceData(int id, vtkPolyData* pd);
244 
246 
251  void SetSourceConnection(int id, vtkAlgorithmOutput* algOutput);
253  {
254  this->SetSourceConnection(0, algOutput);
255  }
257 
261  vtkPolyData* GetSource(int id = 0);
262 
264 
267  vtkSetMacro(Scaling, vtkTypeBool);
268  vtkBooleanMacro(Scaling, vtkTypeBool);
269  vtkGetMacro(Scaling, vtkTypeBool);
271 
273 
276  vtkSetMacro(ScaleMode, int);
277  vtkGetMacro(ScaleMode, int);
278  void SetScaleModeToScaleByScalar() { this->SetScaleMode(VTK_SCALE_BY_SCALAR); }
279  void SetScaleModeToScaleByVector() { this->SetScaleMode(VTK_SCALE_BY_VECTOR); }
281  {
282  this->SetScaleMode(VTK_SCALE_BY_VECTORCOMPONENTS);
283  }
284  void SetScaleModeToDataScalingOff() { this->SetScaleMode(VTK_DATA_SCALING_OFF); }
285  const char* GetScaleModeAsString();
287 
289 
292  vtkSetMacro(ColorMode, int);
293  vtkGetMacro(ColorMode, int);
294  void SetColorModeToColorByScale() { this->SetColorMode(VTK_COLOR_BY_SCALE); }
295  void SetColorModeToColorByScalar() { this->SetColorMode(VTK_COLOR_BY_SCALAR); }
296  void SetColorModeToColorByVector() { this->SetColorMode(VTK_COLOR_BY_VECTOR); }
297  const char* GetColorModeAsString();
299 
301 
304  vtkSetMacro(ScaleFactor, double);
305  vtkGetMacro(ScaleFactor, double);
307 
309 
312  vtkSetVector2Macro(Range, double);
313  vtkGetVectorMacro(Range, double, 2);
315 
317 
320  vtkSetMacro(Orient, vtkTypeBool);
321  vtkBooleanMacro(Orient, vtkTypeBool);
322  vtkGetMacro(Orient, vtkTypeBool);
324 
326 
330  vtkSetMacro(Clamping, vtkTypeBool);
331  vtkBooleanMacro(Clamping, vtkTypeBool);
332  vtkGetMacro(Clamping, vtkTypeBool);
334 
336 
339  vtkSetMacro(VectorMode, int);
340  vtkGetMacro(VectorMode, int);
341  void SetVectorModeToUseVector() { this->SetVectorMode(VTK_USE_VECTOR); }
342  void SetVectorModeToUseNormal() { this->SetVectorMode(VTK_USE_NORMAL); }
345  const char* GetVectorModeAsString();
347 
349 
353  vtkSetVectorMacro(FollowedCameraPosition, double, 3);
354  vtkGetVectorMacro(FollowedCameraPosition, double, 3);
356 
358 
361  vtkSetVectorMacro(FollowedCameraViewUp, double, 3);
362  vtkGetVectorMacro(FollowedCameraViewUp, double, 3);
364 
366 
373  vtkSetMacro(IndexMode, int);
374  vtkGetMacro(IndexMode, int);
375  void SetIndexModeToScalar() { this->SetIndexMode(VTK_INDEXING_BY_SCALAR); }
376  void SetIndexModeToVector() { this->SetIndexMode(VTK_INDEXING_BY_VECTOR); }
377  void SetIndexModeToOff() { this->SetIndexMode(VTK_INDEXING_OFF); }
378  const char* GetIndexModeAsString();
380 
382 
388  vtkSetMacro(GeneratePointIds, vtkTypeBool);
389  vtkGetMacro(GeneratePointIds, vtkTypeBool);
390  vtkBooleanMacro(GeneratePointIds, vtkTypeBool);
392 
394 
398  vtkSetStringMacro(PointIdsName);
399  vtkGetStringMacro(PointIdsName);
401 
403 
408  vtkSetMacro(FillCellData, vtkTypeBool);
409  vtkGetMacro(FillCellData, vtkTypeBool);
410  vtkBooleanMacro(FillCellData, vtkTypeBool);
412 
417  virtual int IsPointVisible(vtkDataSet*, vtkIdType) { return 1; }
418 
420 
426  vtkGetObjectMacro(SourceTransform, vtkTransform);
428 
432  vtkMTimeType GetMTime() override;
433 
435 
440  vtkSetMacro(OutputPointsPrecision, int);
441  vtkGetMacro(OutputPointsPrecision, int);
443 
444 protected:
446  ~vtkGlyph3D() override;
447 
451 
453 
455 
460  virtual bool Execute(vtkDataSet* input, vtkInformationVector* sourceVector, vtkPolyData* output);
461  virtual bool Execute(vtkDataSet* input, vtkInformationVector* sourceVector, vtkPolyData* output,
462  vtkDataArray* inSScalars, vtkDataArray* inVectors);
464 
465  vtkPolyData** Source; // Geometry to copy to each point
466  vtkTypeBool Scaling; // Determine whether scaling of geometry is performed
467  int ScaleMode; // Scale by scalar value or vector magnitude
468  int ColorMode; // new scalars based on scale, scalar or vector
469  double ScaleFactor; // Scale factor to use to scale geometry
470  double Range[2]; // Range to use to perform scalar scaling
471  int Orient; // boolean controls whether to "orient" data
472  int VectorMode; // Orient/scale via normal or via vector data
473  double
474  FollowedCameraPosition[3]; // glyphs face towards this point in VTK_FOLLOW_CAMERA_DIRECTION mode
475  double FollowedCameraViewUp[3]; // glyph up direction in VTK_FOLLOW_CAMERA_DIRECTION mode
476  vtkTypeBool Clamping; // whether to clamp scale factor
477  int IndexMode; // what to use to index into glyph table
478  vtkTypeBool GeneratePointIds; // produce input points ids for each output point
479  vtkTypeBool FillCellData; // whether to fill output cell data
483 
484 private:
485  vtkGlyph3D(const vtkGlyph3D&) = delete;
486  void operator=(const vtkGlyph3D&) = delete;
487 };
488 
493 {
494  if (this->ScaleMode == VTK_SCALE_BY_SCALAR)
495  {
496  return "ScaleByScalar";
497  }
498  else if (this->ScaleMode == VTK_SCALE_BY_VECTOR)
499  {
500  return "ScaleByVector";
501  }
502  else
503  {
504  return "DataScalingOff";
505  }
506 }
507 
512 {
513  if (this->ColorMode == VTK_COLOR_BY_SCALAR)
514  {
515  return "ColorByScalar";
516  }
517  else if (this->ColorMode == VTK_COLOR_BY_VECTOR)
518  {
519  return "ColorByVector";
520  }
521  else
522  {
523  return "ColorByScale";
524  }
525 }
526 
531 {
532  if (this->VectorMode == VTK_USE_VECTOR)
533  {
534  return "UseVector";
535  }
536  else if (this->VectorMode == VTK_USE_NORMAL)
537  {
538  return "UseNormal";
539  }
540  else if (this->VectorMode == VTK_FOLLOW_CAMERA_DIRECTION)
541  {
542  return "FollowCameraDirection";
543  }
544  else
545  {
546  return "VectorRotationOff";
547  }
548 }
549 
554 {
555  if (this->IndexMode == VTK_INDEXING_OFF)
556  {
557  return "IndexingOff";
558  }
559  else if (this->IndexMode == VTK_INDEXING_BY_SCALAR)
560  {
561  return "IndexingByScalar";
562  }
563  else
564  {
565  return "IndexingByVector";
566  }
567 }
568 
569 #endif
Proxy object to connect input/output ports.
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:159
abstract class to specify dataset behavior
Definition: vtkDataSet.h:166
copy oriented and scaled glyph geometry to every input point
Definition: vtkGlyph3D.h:216
void SetIndexModeToScalar()
Index into table of sources by scalar, by vector/normal magnitude, or no indexing.
Definition: vtkGlyph3D.h:375
vtkPolyData * GetSource(int idx, vtkInformationVector *sourceInfo)
void SetSourceData(int id, vtkPolyData *pd)
Specify a source object at a specified table location.
void SetScaleModeToScaleByVector()
Either scale by scalar or by vector/normal magnitude.
Definition: vtkGlyph3D.h:279
int OutputPointsPrecision
Definition: vtkGlyph3D.h:482
void SetVectorModeToUseNormal()
Specify whether to use vector or normal to perform vector operations.
Definition: vtkGlyph3D.h:342
const char * GetVectorModeAsString()
Return the vector mode as a character string.
Definition: vtkGlyph3D.h:530
void SetScaleModeToScaleByVectorComponents()
Either scale by scalar or by vector/normal magnitude.
Definition: vtkGlyph3D.h:280
int ScaleMode
Definition: vtkGlyph3D.h:467
vtkPolyData * GetSource(int id=0)
Get a pointer to a source object at a specified table location.
void SetIndexModeToOff()
Index into table of sources by scalar, by vector/normal magnitude, or no indexing.
Definition: vtkGlyph3D.h:377
void SetScaleModeToScaleByScalar()
Either scale by scalar or by vector/normal magnitude.
Definition: vtkGlyph3D.h:278
void SetColorModeToColorByScalar()
Either color by scale, scalar or by vector/normal magnitude.
Definition: vtkGlyph3D.h:295
void SetSourceTransform(vtkTransform *)
When set, this is use to transform the source polydata before using it to generate the glyph.
int ColorMode
Definition: vtkGlyph3D.h:468
const char * GetIndexModeAsString()
Return the index mode as a character string.
Definition: vtkGlyph3D.h:553
static vtkGlyph3D * New()
Construct object with scaling on, scaling mode is by scalar value, scale factor = 1....
vtkTypeBool Scaling
Definition: vtkGlyph3D.h:466
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
const char * GetScaleModeAsString()
Return the method of scaling as a descriptive character string.
Definition: vtkGlyph3D.h:492
int VectorMode
Definition: vtkGlyph3D.h:472
void SetVectorModeToUseVector()
Specify whether to use vector or normal to perform vector operations.
Definition: vtkGlyph3D.h:341
void SetScaleModeToDataScalingOff()
Either scale by scalar or by vector/normal magnitude.
Definition: vtkGlyph3D.h:284
vtkMTimeType GetMTime() override
Overridden to include SourceTransform's MTime.
virtual int IsPointVisible(vtkDataSet *, vtkIdType)
This can be overwritten by subclass to return 0 when a point is blanked.
Definition: vtkGlyph3D.h:417
const char * GetColorModeAsString()
Return the method of coloring as a descriptive character string.
Definition: vtkGlyph3D.h:511
void SetSourceConnection(int id, vtkAlgorithmOutput *algOutput)
Specify a source object at a specified table location.
int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called by the superclass.
vtkTypeBool Clamping
Definition: vtkGlyph3D.h:476
int IndexMode
Definition: vtkGlyph3D.h:477
void SetColorModeToColorByScale()
Either color by scale, scalar or by vector/normal magnitude.
Definition: vtkGlyph3D.h:294
virtual bool Execute(vtkDataSet *input, vtkInformationVector *sourceVector, vtkPolyData *output, vtkDataArray *inSScalars, vtkDataArray *inVectors)
Method called in RequestData() to do the actual data processing.
void SetColorModeToColorByVector()
Either color by scale, scalar or by vector/normal magnitude.
Definition: vtkGlyph3D.h:296
vtkTypeBool FillCellData
Definition: vtkGlyph3D.h:479
vtkPolyData ** Source
Definition: vtkGlyph3D.h:465
void SetSourceConnection(vtkAlgorithmOutput *algOutput)
Specify a source object at a specified table location.
Definition: vtkGlyph3D.h:252
~vtkGlyph3D() override
int FillInputPortInformation(int, vtkInformation *) override
Fill the input port information objects for this algorithm.
void SetVectorModeToFollowCameraDirection()
Specify whether to use vector or normal to perform vector operations.
Definition: vtkGlyph3D.h:344
char * PointIdsName
Definition: vtkGlyph3D.h:480
int RequestUpdateExtent(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called by the superclass.
double ScaleFactor
Definition: vtkGlyph3D.h:469
vtkTransform * SourceTransform
Definition: vtkGlyph3D.h:481
void SetIndexModeToVector()
Index into table of sources by scalar, by vector/normal magnitude, or no indexing.
Definition: vtkGlyph3D.h:376
void SetSourceData(vtkPolyData *pd)
Set the source to use for the glyph.
Definition: vtkGlyph3D.h:235
void SetVectorModeToVectorRotationOff()
Specify whether to use vector or normal to perform vector operations.
Definition: vtkGlyph3D.h:343
vtkTypeBool GeneratePointIds
Definition: vtkGlyph3D.h:478
virtual bool Execute(vtkDataSet *input, vtkInformationVector *sourceVector, vtkPolyData *output)
Method called in RequestData() to do the actual data processing.
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.
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:195
describes linear transformations via a 4x4 matrix
Definition: vtkTransform.h:164
auto Range(IterablePtr iterable, Options &&... opts) -> typename detail::IterableTraits< typename detail::StripPointers< IterablePtr >::type >::RangeType
Generate an iterable STL proxy object for a VTK container.
Definition: vtkRange.h:85
int vtkTypeBool
Definition: vtkABI.h:69
#define VTK_COLOR_BY_VECTOR
Definition: vtkGlyph3D.h:202
#define VTK_FOLLOW_CAMERA_DIRECTION
Definition: vtkGlyph3D.h:207
#define VTK_SCALE_BY_SCALAR
Definition: vtkGlyph3D.h:195
#define VTK_INDEXING_BY_SCALAR
Definition: vtkGlyph3D.h:210
#define VTK_DATA_SCALING_OFF
Definition: vtkGlyph3D.h:198
#define VTK_VECTOR_ROTATION_OFF
Definition: vtkGlyph3D.h:206
#define VTK_COLOR_BY_SCALAR
Definition: vtkGlyph3D.h:201
#define VTK_USE_VECTOR
Definition: vtkGlyph3D.h:204
#define VTK_USE_NORMAL
Definition: vtkGlyph3D.h:205
#define VTK_INDEXING_BY_VECTOR
Definition: vtkGlyph3D.h:211
#define VTK_SCALE_BY_VECTOR
Definition: vtkGlyph3D.h:196
#define VTK_INDEXING_OFF
Definition: vtkGlyph3D.h:209
#define VTK_COLOR_BY_SCALE
Definition: vtkGlyph3D.h:200
#define VTK_SCALE_BY_VECTORCOMPONENTS
Definition: vtkGlyph3D.h:197
int vtkIdType
Definition: vtkType.h:332
vtkTypeUInt32 vtkMTimeType
Definition: vtkType.h:287