VTK  9.2.6
vtkPolyData.h
Go to the documentation of this file.
1/*=========================================================================
2
3 Program: Visualization Toolkit
4 Module: vtkPolyData.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=========================================================================*/
77#ifndef vtkPolyData_h
78#define vtkPolyData_h
79
80#include "vtkCommonDataModelModule.h" // For export macro
81#include "vtkPointSet.h"
82
83#include "vtkCellArray.h" // Needed for inline methods
84#include "vtkCellLinks.h" // Needed for inline methods
85#include "vtkPolyDataInternals.h" // Needed for inline methods
86
87class vtkVertex;
88class vtkPolyVertex;
89class vtkLine;
90class vtkPolyLine;
91class vtkTriangle;
92class vtkQuad;
93class vtkPolygon;
95class vtkEmptyCell;
96struct vtkPolyDataDummyContainter;
98
99class VTKCOMMONDATAMODEL_EXPORT vtkPolyData : public vtkPointSet
100{
101public:
102 static vtkPolyData* New();
104
105 vtkTypeMacro(vtkPolyData, vtkPointSet);
106 void PrintSelf(ostream& os, vtkIndent indent) override;
107
111 int GetDataObjectType() override { return VTK_POLY_DATA; }
112
116 void CopyStructure(vtkDataSet* ds) override;
117
119
122 vtkIdType GetNumberOfCells() override;
124 vtkCell* GetCell(vtkIdType cellId) override;
125 void GetCell(vtkIdType cellId, vtkGenericCell* cell) override;
126 int GetCellType(vtkIdType cellId) override;
127 vtkIdType GetCellSize(vtkIdType cellId) override;
128 void GetCellBounds(vtkIdType cellId, double bounds[6]) override;
129 void GetCellNeighbors(vtkIdType cellId, vtkIdList* ptIds, vtkIdList* cellIds) override;
131
139 void CopyCells(vtkPolyData* pd, vtkIdList* idList, vtkIncrementalPointLocator* locator = nullptr);
140
144 void GetCellPoints(vtkIdType cellId, vtkIdList* ptIds) override;
145
150 void GetPointCells(vtkIdType ptId, vtkIdList* cellIds) override;
151
171
177 void GetCellsBounds(double bounds[6]);
178
185 void Squeeze() override;
186
190 int GetMaxCellSize() override;
191
198
203
209
214
220
225
231
236
243
245
248 vtkIdType GetNumberOfVerts() { return (this->Verts ? this->Verts->GetNumberOfCells() : 0); }
249 vtkIdType GetNumberOfLines() { return (this->Lines ? this->Lines->GetNumberOfCells() : 0); }
250 vtkIdType GetNumberOfPolys() { return (this->Polys ? this->Polys->GetNumberOfCells() : 0); }
251 vtkIdType GetNumberOfStrips() { return (this->Strips ? this->Strips->GetNumberOfCells() : 0); }
253
263 bool AllocateEstimate(vtkIdType numCells, vtkIdType maxCellSize);
264
274 bool AllocateEstimate(vtkIdType numVerts, vtkIdType maxVertSize, vtkIdType numLines,
275 vtkIdType maxLineSize, vtkIdType numPolys, vtkIdType maxPolySize, vtkIdType numStrips,
276 vtkIdType maxStripSize);
277
287 bool AllocateExact(vtkIdType numCells, vtkIdType connectivitySize);
288
299 bool AllocateExact(vtkIdType numVerts, vtkIdType vertConnSize, vtkIdType numLines,
300 vtkIdType lineConnSize, vtkIdType numPolys, vtkIdType polyConnSize, vtkIdType numStrips,
301 vtkIdType stripConnSize);
302
312
322 bool AllocateProportional(vtkPolyData* pd, double ratio);
323
330 void Allocate(vtkIdType numCells = 1000, int vtkNotUsed(extSize) = 1000)
331 {
332 this->AllocateExact(numCells, numCells);
333 }
334
345 void Allocate(vtkPolyData* inPolyData, vtkIdType numCells = 1000, int vtkNotUsed(extSize) = 1000)
346 {
347 this->AllocateProportional(
348 inPolyData, static_cast<double>(numCells) / inPolyData->GetNumberOfCells());
349 }
350
358 vtkIdType InsertNextCell(int type, int npts, const vtkIdType pts[]) VTK_SIZEHINT(pts, npts);
359
368
373 void Reset();
374
383
387 bool NeedToBuildCells() { return this->Cells == nullptr; }
388
395 void BuildLinks(int initialSize = 0);
396
398
403 virtual void SetLinks(vtkAbstractCellLinks* links);
406
413
418
420
424 void GetPointCells(vtkIdType ptId, vtkIdType& ncells, vtkIdType*& cells)
425 VTK_SIZEHINT(cells, ncells);
427
434
446 unsigned char GetCellPoints(vtkIdType cellId, vtkIdType& npts, vtkIdType const*& pts)
447 VTK_SIZEHINT(pts, npts);
448
463 void GetCellPoints(vtkIdType cellId, vtkIdType& npts, vtkIdType const*& pts, vtkIdList* ptIds)
464 VTK_SIZEHINT(pts, npts) override;
465
470 int IsTriangle(int v1, int v2, int v3);
471
480
485 int IsPointUsedByCell(vtkIdType ptId, vtkIdType cellId);
486
495 void ReplaceCell(vtkIdType cellId, vtkIdList* ids);
496 void ReplaceCell(vtkIdType cellId, int npts, const vtkIdType pts[]) VTK_SIZEHINT(pts, npts);
503 void ReplaceCellPoint(vtkIdType cellId, vtkIdType oldPtId, vtkIdType newPtId);
504
509 void ReverseCell(vtkIdType cellId);
510
512
516 void DeletePoint(vtkIdType ptId);
517 void DeleteCell(vtkIdType cellId);
519
529
531
540 vtkIdType InsertNextLinkedPoint(double x[3], int numLinks);
542
549 vtkIdType InsertNextLinkedCell(int type, int npts, const vtkIdType pts[]) VTK_SIZEHINT(pts, npts);
550
560 void ReplaceLinkedCell(vtkIdType cellId, int npts, const vtkIdType pts[]) VTK_SIZEHINT(pts, npts);
561
569 void RemoveCellReference(vtkIdType cellId);
570
578 void AddCellReference(vtkIdType cellId);
579
588
597
603 void ResizeCellList(vtkIdType ptId, int size);
604
608 void Initialize() override;
609
611
614 virtual int GetPiece();
615 virtual int GetNumberOfPieces();
617
621 virtual int GetGhostLevel();
622
631 unsigned long GetActualMemorySize() override;
632
634
637 void ShallowCopy(vtkDataObject* src) override;
638 void DeepCopy(vtkDataObject* src) override;
640
648
650
656
675 enum
676 {
677 ERR_NO_SUCH_FIELD = -4,
678 ERR_INCORRECT_FIELD = -3,
679 ERR_NON_MANIFOLD_STAR = -2,
680 REGULAR_POINT = -1,
681 MINIMUM = 0,
682 SADDLE = 1,
683 MAXIMUM = 2
684 };
685
687 int GetScalarFieldCriticalIndex(vtkIdType pointId, int fieldId);
688 int GetScalarFieldCriticalIndex(vtkIdType pointId, const char* fieldName);
689
698
703
713 unsigned char GetCell(vtkIdType cellId, const vtkIdType*& pts);
714
715protected:
717 ~vtkPolyData() override;
718
721
722 vtkCellArray* GetCellArrayInternal(TaggedCellId tag);
723
724 // constant cell objects returned by GetCell called.
734
735 // points inherited
736 // point data (i.e., scalars, vectors, normals, tcoords) inherited
741
742 // supporting structures for more complex topological operations
743 // built only when necessary
746
748
749 // dummy static member below used as a trick to simplify traversal
750 static vtkPolyDataDummyContainter DummyContainer;
751
752 // Take into account only points that belong to at least one cell.
753 double CellsBounds[6];
754
756
757private:
758 void Cleanup();
759
760private:
761 vtkPolyData(const vtkPolyData&) = delete;
762 void operator=(const vtkPolyData&) = delete;
763};
764
765//------------------------------------------------------------------------------
766inline void vtkPolyData::GetPointCells(vtkIdType ptId, vtkIdType& ncells, vtkIdType*& cells)
767{
768 ncells = this->Links->GetNcells(ptId);
769 cells = this->Links->GetCells(ptId);
770}
771
772//------------------------------------------------------------------------------
774{
775 return (this->GetNumberOfVerts() + this->GetNumberOfLines() + this->GetNumberOfPolys() +
776 this->GetNumberOfStrips());
777}
778
779//------------------------------------------------------------------------------
781{
782 if (!this->Cells)
783 {
784 this->BuildCells();
785 }
786 return static_cast<int>(this->Cells->GetTag(cellId).GetCellType());
787}
788
789//------------------------------------------------------------------------------
791{
792 if (!this->Cells)
793 {
794 this->BuildCells();
795 }
796 switch (this->GetCellType(cellId))
797 {
798 case VTK_EMPTY_CELL:
799 return 0;
800 case VTK_VERTEX:
801 return 1;
802 case VTK_LINE:
803 return 2;
804 case VTK_TRIANGLE:
805 return 3;
806 case VTK_QUAD:
807 return 4;
808 case VTK_POLY_VERTEX:
809 return this->Verts ? this->Verts->GetCellSize(this->GetCellIdRelativeToCellArray(cellId)) : 0;
810 case VTK_POLY_LINE:
811 return this->Lines ? this->Lines->GetCellSize(this->GetCellIdRelativeToCellArray(cellId)) : 0;
812 case VTK_POLYGON:
813 return this->Polys ? this->Polys->GetCellSize(this->GetCellIdRelativeToCellArray(cellId)) : 0;
815 return this->Strips ? this->Strips->GetCellSize(this->GetCellIdRelativeToCellArray(cellId))
816 : 0;
817 }
818 vtkWarningMacro(<< "Cell type not supported.");
819 return 0;
820}
821
822//------------------------------------------------------------------------------
823inline int vtkPolyData::IsTriangle(int v1, int v2, int v3)
824{
825 vtkIdType n1;
826 int i, j, tVerts[3];
827 vtkIdType* cells;
828 const vtkIdType* tVerts2;
829 vtkIdType n2;
830
831 tVerts[0] = v1;
832 tVerts[1] = v2;
833 tVerts[2] = v3;
834
835 for (i = 0; i < 3; i++)
836 {
837 this->GetPointCells(tVerts[i], n1, cells);
838 for (j = 0; j < n1; j++)
839 {
840 this->GetCellPoints(cells[j], n2, tVerts2);
841 if ((tVerts[0] == tVerts2[0] || tVerts[0] == tVerts2[1] || tVerts[0] == tVerts2[2]) &&
842 (tVerts[1] == tVerts2[0] || tVerts[1] == tVerts2[1] || tVerts[1] == tVerts2[2]) &&
843 (tVerts[2] == tVerts2[0] || tVerts[2] == tVerts2[1] || tVerts[2] == tVerts2[2]))
844 {
845 return 1;
846 }
847 }
848 }
849 return 0;
850}
851
852//------------------------------------------------------------------------------
854{
855 vtkIdType npts;
856 const vtkIdType* pts;
857
858 this->GetCellPoints(cellId, npts, pts);
859 for (vtkIdType i = 0; i < npts; i++)
860 {
861 if (pts[i] == ptId)
862 {
863 return 1;
864 }
865 }
866
867 return 0;
868}
869
870//------------------------------------------------------------------------------
872{
873 this->Links->DeletePoint(ptId);
874}
875
876//------------------------------------------------------------------------------
878{
879 this->Cells->GetTag(cellId).MarkDeleted();
880}
881
882//------------------------------------------------------------------------------
884{
885 const vtkIdType* pts;
886 vtkIdType npts;
887
888 this->GetCellPoints(cellId, npts, pts);
889 for (vtkIdType i = 0; i < npts; i++)
890 {
891 this->Links->RemoveCellReference(cellId, pts[i]);
892 }
893}
894
895//------------------------------------------------------------------------------
897{
898 const vtkIdType* pts;
899 vtkIdType npts;
900
901 this->GetCellPoints(cellId, npts, pts);
902 for (vtkIdType i = 0; i < npts; i++)
903 {
904 this->Links->AddCellReference(cellId, pts[i]);
905 }
906}
907
908//------------------------------------------------------------------------------
909inline void vtkPolyData::ResizeCellList(vtkIdType ptId, int size)
910{
911 this->Links->ResizeCellList(ptId, size);
912}
913
914//------------------------------------------------------------------------------
916{
917 switch (tag.GetTarget())
918 {
920 return this->Verts;
922 return this->Lines;
924 return this->Polys;
926 return this->Strips;
927 }
928 return nullptr; // unreachable
929}
930
931//------------------------------------------------------------------------------
932inline void vtkPolyData::ReplaceCellPoint(vtkIdType cellId, vtkIdType oldPtId, vtkIdType newPtId)
933{
935 this->GetCellPoints(cellId, ids);
936 for (vtkIdType i = 0; i < ids->GetNumberOfIds(); i++)
937 {
938 if (ids->GetId(i) == oldPtId)
939 {
940 ids->SetId(i, newPtId);
941 break;
942 }
943 }
944 this->ReplaceCell(cellId, static_cast<int>(ids->GetNumberOfIds()), ids->GetPointer(0));
945}
946
947//------------------------------------------------------------------------------
948inline unsigned char vtkPolyData::GetCellPoints(
949 vtkIdType cellId, vtkIdType& npts, vtkIdType const*& pts)
950{
951 if (!this->Cells)
952 {
953 this->BuildCells();
954 }
955
956 const TaggedCellId tag = this->Cells->GetTag(cellId);
957 if (tag.IsDeleted())
958 {
959 npts = 0;
960 pts = nullptr;
961 return VTK_EMPTY_CELL;
962 }
963
964 vtkCellArray* cells = this->GetCellArrayInternal(tag);
965 cells->GetCellAtId(tag.GetCellId(), npts, pts);
966 return tag.GetCellType();
967}
968
969//------------------------------------------------------------------------------
971 vtkIdType cellId, vtkIdType& npts, vtkIdType const*& pts, vtkIdList* ptIds)
972{
973 if (!this->Cells)
974 {
975 this->BuildCells();
976 }
977
978 const TaggedCellId tag = this->Cells->GetTag(cellId);
979 if (tag.IsDeleted())
980 {
981 npts = 0;
982 pts = nullptr;
983 }
984
985 vtkCellArray* cells = this->GetCellArrayInternal(tag);
986 cells->GetCellAtId(tag.GetCellId(), npts, pts, ptIds);
987}
988
989#endif
object to represent cell connectivity
void GetCellAtId(vtkIdType cellId, vtkIdType &cellSize, vtkIdType const *&cellPoints)
Return the point ids for the cell at cellId.
vtkIdType GetCellSize(const vtkIdType cellId) const
Return the size of the cell at cellId.
abstract class to specify cell behavior
Definition vtkCell.h:70
abstract superclass for arrays of numeric data
general representation of visualization data
abstract class to specify dataset behavior
Definition vtkDataSet.h:72
virtual vtkCell * GetCell(vtkIdType cellId)=0
Get cell with cellId such that: 0 <= cellId < NumberOfCells.
an empty cell used as a place-holder during processing
provides thread-safe access to cells
list of point or cell ids
Definition vtkIdList.h:43
Abstract class in support of both point location and point insertion.
a simple class to control print indentation
Definition vtkIndent.h:49
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
cell represents a 1D line
Definition vtkLine.h:43
Allocate and hold a VTK object.
Definition vtkNew.h:71
T * GetPointer() const noexcept
Get a raw pointer to the contained object.
Definition vtkNew.h:160
concrete class for storing a set of points
Definition vtkPointSet.h:79
void GetCellPoints(vtkIdType, vtkIdList *idList) override
This method resets parameter idList, as there is no cell in a vtkPointSet.
void GetPointCells(vtkIdType, vtkIdList *idList) override
This method resets parameter idList, as there is no cell in a vtkPointSet.
vtkIdType GetCellSize(vtkIdType) override
This method always returns 1, as all cells are point in a pure vtkPointSet.
vtkIdType GetNumberOfCells() override
This method always returns 0, as there are no cells in a vtkPointSet.
int GetCellType(vtkIdType) override
This method always returns VTK_EMPTY_CELL, as there is no cell in a vtkPointSet.
concrete dataset represents vertices, lines, polygons, and triangle strips
vtkCellArray * GetStrips()
Get the cell array defining triangle strips.
vtkIdType InsertNextCell(int type, int npts, const vtkIdType pts[])
Insert a cell of type VTK_VERTEX, VTK_POLY_VERTEX, VTK_LINE, VTK_POLY_LINE, VTK_TRIANGLE,...
vtkSmartPointer< vtkPolyVertex > PolyVertex
static vtkPolyData * ExtendedNew()
void GetCell(vtkIdType cellId, vtkGenericCell *cell) override
Standard vtkDataSet interface.
void Squeeze() override
Recover extra allocated memory when creating data whose initial size is unknown.
bool NeedToBuildCells()
Check if BuildCells is needed.
bool AllocateEstimate(vtkIdType numCells, vtkIdType maxCellSize)
Preallocate memory for the internal cell arrays.
int GetScalarFieldCriticalIndex(vtkIdType pointId, const char *fieldName)
vtkCell * GetCell(vtkIdType cellId) override
Standard vtkDataSet interface.
void SetPolys(vtkCellArray *p)
Set the cell array defining polygons.
vtkCellArray * GetCellArrayInternal(TaggedCellId tag)
vtkIdType GetCellIdRelativeToCellArray(vtkIdType cellId)
Maps the cell at position cellId inside the vtkPolyData to its location in the corresponding cell arr...
void GetCellsBounds(double bounds[6])
Get the cells bounds.
void RemoveCellReference(vtkIdType cellId)
Remove all references to cell in cell structure.
static vtkPolyData * GetData(vtkInformationVector *v, int i=0)
Retrieve an instance of this class from an information object.
void ComputeCellsBounds()
Compute the (X, Y, Z) bounds of the data.
vtkIdType GetNumberOfLines()
Return the number of primitives of a particular type held.
bool AllocateEstimate(vtkIdType numVerts, vtkIdType maxVertSize, vtkIdType numLines, vtkIdType maxLineSize, vtkIdType numPolys, vtkIdType maxPolySize, vtkIdType numStrips, vtkIdType maxStripSize)
Preallocate memory for the internal cell arrays.
void GetCellPoints(vtkIdType cellId, vtkIdList *ptIds) override
Copy a cells point ids into list provided.
int IsTriangle(int v1, int v2, int v3)
Given three vertices, determine whether it's a triangle.
void SetLines(vtkCellArray *l)
Set the cell array defining lines.
void SetVerts(vtkCellArray *v)
Set the cell array defining vertices.
void PrintSelf(ostream &os, vtkIndent indent) override
Standard methods for type information and printing.
vtkSmartPointer< vtkCellLinks > Links
bool AllocateExact(vtkIdType numVerts, vtkIdType vertConnSize, vtkIdType numLines, vtkIdType lineConnSize, vtkIdType numPolys, vtkIdType polyConnSize, vtkIdType numStrips, vtkIdType stripConnSize)
Preallocate memory for the internal cell arrays.
void Initialize() override
Restore object to initial state.
void AddReferenceToCell(vtkIdType ptId, vtkIdType cellId)
Add a reference to a cell in a particular point's link list.
void GetCellNeighbors(vtkIdType cellId, vtkIdList *ptIds, vtkIdList *cellIds) override
Standard vtkDataSet interface.
~vtkPolyData() override
int GetScalarFieldCriticalIndex(vtkIdType pointId, int fieldId)
void ReplaceLinkedCell(vtkIdType cellId, int npts, const vtkIdType pts[])
Replace one cell with another in cell structure.
vtkGetSmartPointerMacro(Links, vtkAbstractCellLinks)
Set/Get the links that you created possibly without using BuildLinks.
void CopyStructure(vtkDataSet *ds) override
Copy the geometric and topological structure of an input poly data object.
vtkNew< vtkIdList > LegacyBuffer
int GetCellType(vtkIdType cellId) override
Standard vtkDataSet interface.
void GetCellBounds(vtkIdType cellId, double bounds[6]) override
Standard vtkDataSet interface.
void ReplaceCell(vtkIdType cellId, vtkIdList *ids)
Replace the points defining cell "cellId" with a new set of points.
virtual int GetGhostLevel()
Get the ghost level.
vtkMTimeType GetMTime() override
Get MTime which also considers its cell array MTime.
vtkSmartPointer< vtkCellArray > Verts
vtkSmartPointer< vtkPolyLine > PolyLine
vtkIdType GetNumberOfStrips()
Return the number of primitives of a particular type held.
int GetScalarFieldCriticalIndex(vtkIdType pointId, vtkDataArray *scalarField)
bool AllocateCopy(vtkPolyData *pd)
Preallocate memory for the internal cell arrays such that they are the same size as those in pd.
vtkIdType InsertNextLinkedCell(int type, int npts, const vtkIdType pts[])
Add a new cell to the cell data structure (after cell pointers have been built).
vtkIdType InsertNextCell(int type, vtkIdList *pts)
Insert a cell of type VTK_VERTEX, VTK_POLY_VERTEX, VTK_LINE, VTK_POLY_LINE, VTK_TRIANGLE,...
vtkIdType GetNumberOfPolys()
Return the number of primitives of a particular type held.
void ShallowCopy(vtkDataObject *src) override
Shallow and Deep copy.
vtkSmartPointer< vtkCellArray > Strips
vtkSmartPointer< vtkQuad > Quad
void DeleteCell(vtkIdType cellId)
Mark a point/cell as deleted from this vtkPolyData.
vtkSmartPointer< vtkPolygon > Polygon
vtkIdType InsertNextLinkedPoint(double x[3], int numLinks)
Add a point to the cell data structure (after cell pointers have been built).
int GetMaxCellSize() override
Return the maximum cell size in this poly data.
void RemoveGhostCells()
This method will remove any cell that is marked as ghost (has the vtkDataSetAttributes::DUPLICATECELL...
vtkSmartPointer< vtkLine > Line
void ResizeCellList(vtkIdType ptId, int size)
Resize the list of cells using a particular point.
virtual int GetPiece()
Get the piece and the number of pieces.
vtkTimeStamp CellsBoundsTime
virtual void SetLinks(vtkAbstractCellLinks *links)
Set/Get the links that you created possibly without using BuildLinks.
vtkIdType GetNumberOfCells() override
Standard vtkDataSet interface.
bool AllocateExact(vtkIdType numCells, vtkIdType connectivitySize)
Preallocate memory for the internal cell arrays.
vtkIdType InsertNextLinkedPoint(int numLinks)
Add a point to the cell data structure (after cell pointers have been built).
unsigned char GetCell(vtkIdType cellId, const vtkIdType *&pts)
Get a pointer to the cell, ie [npts pid1 .
vtkCellArray * GetVerts()
Get the cell array defining vertices.
vtkSmartPointer< vtkCellArray > Polys
void Reset()
Begin inserting data all over again.
static vtkPolyData * New()
unsigned long GetActualMemorySize() override
Return the actual size of the data in kibibytes (1024 bytes).
void RemoveReferenceToCell(vtkIdType ptId, vtkIdType cellId)
Remove a reference to a cell in a particular point's link list.
int IsEdge(vtkIdType p1, vtkIdType p2)
Determine whether two points form an edge.
void ReplaceCell(vtkIdType cellId, int npts, const vtkIdType pts[])
Replace the points defining cell "cellId" with a new set of points.
static vtkPolyDataDummyContainter DummyContainer
vtkCellArray * GetPolys()
Get the cell array defining polygons.
void AddCellReference(vtkIdType cellId)
Add references to cell in cell structure.
int GetDataObjectType() override
Return what type of dataset this is.
vtkSmartPointer< vtkCellArray > Lines
void GetCellEdgeNeighbors(vtkIdType cellId, vtkIdType p1, vtkIdType p2, vtkIdList *cellIds)
Get the neighbors at an edge.
vtkSmartPointer< vtkEmptyCell > EmptyCell
virtual int GetNumberOfPieces()
Get the piece and the number of pieces.
void DeepCopy(vtkDataObject *src) override
Shallow and Deep copy.
void RemoveDeletedCells()
The cells marked by calls to DeleteCell are stored in the Cell Array VTK_EMPTY_CELL,...
vtkIdType GetNumberOfVerts()
Return the number of primitives of a particular type held.
void DeleteCells()
Release data structure that allows random access of the cells.
virtual vtkMTimeType GetMeshMTime()
Return the mesh (geometry/topology) modification time.
static vtkPolyData * GetData(vtkInformation *info)
Retrieve an instance of this class from an information object.
vtkSmartPointer< vtkVertex > Vertex
int IsPointUsedByCell(vtkIdType ptId, vtkIdType cellId)
Determine whether a point is used by a particular cell.
void ReplaceCellPoint(vtkIdType cellId, vtkIdType oldPtId, vtkIdType newPtId)
Replace a point in the cell connectivity list with a different point.
vtkSmartPointer< CellMap > Cells
void GetPointCells(vtkIdType ptId, vtkIdList *cellIds) override
Efficient method to obtain cells using a particular point.
vtkSmartPointer< vtkTriangle > Triangle
void BuildCells()
Create data structure that allows random access of cells.
void DeletePoint(vtkIdType ptId)
Mark a point/cell as deleted from this vtkPolyData.
void CopyCells(vtkPolyData *pd, vtkIdList *idList, vtkIncrementalPointLocator *locator=nullptr)
Copy cells listed in idList from pd, including points, point data, and cell data.
vtkCellArray * GetLines()
Get the cell array defining lines.
void Allocate(vtkIdType numCells=1000, int vtkNotUsed(extSize)=1000)
Method allocates initial storage for vertex, line, polygon, and triangle strip arrays.
void BuildLinks(int initialSize=0)
Create upward links from points to cells that use each point.
vtkIdType GetCellSize(vtkIdType cellId) override
Standard vtkDataSet interface.
void Allocate(vtkPolyData *inPolyData, vtkIdType numCells=1000, int vtkNotUsed(extSize)=1000)
Similar to the method above, this method allocates initial storage for vertex, line,...
void DeleteLinks()
Release the upward links from point to cells that use each point.
void ReverseCell(vtkIdType cellId)
Reverse the order of point ids defining the cell.
vtkSmartPointer< vtkTriangleStrip > TriangleStrip
void SetStrips(vtkCellArray *s)
Set the cell array defining triangle strips.
bool AllocateProportional(vtkPolyData *pd, double ratio)
Preallocate memory for the internal cell arrays such that they are proportional to those in pd by a f...
cell represents a set of 1D lines
Definition vtkPolyLine.h:49
cell represents a set of 0D vertices
a cell that represents an n-sided polygon
Definition vtkPolygon.h:52
a cell that represents a 2D quadrilateral
Definition vtkQuad.h:48
Hold a reference to a vtkObjectBase instance.
record modification and/or execution time
a cell that represents a triangle strip
a cell that represents a triangle
Definition vtkTriangle.h:48
a cell that represents a 3D point
Definition vtkVertex.h:43
unsigned char GetCellType() const noexcept
vtkIdType GetCellId() const noexcept
@ VTK_TRIANGLE_STRIP
Definition vtkCellType.h:52
@ VTK_POLY_LINE
Definition vtkCellType.h:50
@ VTK_TRIANGLE
Definition vtkCellType.h:51
@ VTK_POLYGON
Definition vtkCellType.h:53
@ VTK_EMPTY_CELL
Definition vtkCellType.h:46
@ VTK_LINE
Definition vtkCellType.h:49
@ VTK_QUAD
Definition vtkCellType.h:55
@ VTK_VERTEX
Definition vtkCellType.h:47
@ VTK_POLY_VERTEX
Definition vtkCellType.h:48
int vtkIdType
Definition vtkType.h:332
vtkTypeUInt32 vtkMTimeType
Definition vtkType.h:287
#define VTK_POLY_DATA
Definition vtkType.h:77
#define VTK_SIZEHINT(...)