VTK  9.7.20260827
vtkPolyData.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2// SPDX-License-Identifier: BSD-3-Clause
164
165#ifndef vtkPolyData_h
166#define vtkPolyData_h
167
168#include "vtkCommonDataModelModule.h" // For export macro
169#include "vtkPointSet.h"
170#include "vtkWrappingHints.h" // For VTK_MARSHALAUTO
171
172#include "vtkCellArray.h" // Needed for inline methods
173#include "vtkCellLinks.h" // Needed for inline methods
174#include "vtkPolyDataInternals.h" // Needed for inline methods
175
176VTK_ABI_NAMESPACE_BEGIN
178
179class VTKCOMMONDATAMODEL_EXPORT VTK_MARSHALAUTO vtkPolyData : public vtkPointSet
180{
181public:
182 static vtkPolyData* New();
184
185 vtkTypeMacro(vtkPolyData, vtkPointSet);
186 void PrintSelf(ostream& os, vtkIndent indent) override;
187
191 int GetDataObjectType() VTK_FUTURE_CONST override { return VTK_POLY_DATA; }
192
196 void CopyStructure(vtkDataSet* ds) override;
197
199
202 inline vtkIdType GetNumberOfCells() override;
204 vtkCell* GetCell(vtkIdType cellId) override;
205 void GetCell(vtkIdType cellId, vtkGenericCell* cell) override;
206 int GetCellType(vtkIdType cellId) override;
207 vtkIdType GetCellSize(vtkIdType cellId) override;
208 void GetCellBounds(vtkIdType cellId, double bounds[6]) override;
209 void GetCellNeighbors(vtkIdType cellId, vtkIdList* ptIds, vtkIdList* cellIds) override;
211
219 void CopyCells(vtkPolyData* pd, vtkIdList* idList, vtkIncrementalPointLocator* locator = nullptr);
220
224 void GetCellPoints(vtkIdType cellId, vtkIdList* ptIds) override;
225
230 void GetPointCells(vtkIdType ptId, vtkIdList* cellIds) override;
231
251
257 void GetCellsBounds(double bounds[6]);
258
265 void Squeeze() override;
266
270 int GetMaxCellSize() override;
271
273
280
287
292
298
303
309
314
320
325
332
334
337 vtkIdType GetNumberOfVerts() { return (this->Verts ? this->Verts->GetNumberOfCells() : 0); }
338 vtkIdType GetNumberOfLines() { return (this->Lines ? this->Lines->GetNumberOfCells() : 0); }
339 vtkIdType GetNumberOfPolys() { return (this->Polys ? this->Polys->GetNumberOfCells() : 0); }
340 vtkIdType GetNumberOfStrips() { return (this->Strips ? this->Strips->GetNumberOfCells() : 0); }
342
352 bool AllocateEstimate(vtkIdType numCells, vtkIdType maxCellSize);
353
363 bool AllocateEstimate(vtkIdType numVerts, vtkIdType maxVertSize, vtkIdType numLines,
364 vtkIdType maxLineSize, vtkIdType numPolys, vtkIdType maxPolySize, vtkIdType numStrips,
365 vtkIdType maxStripSize);
366
376 bool AllocateExact(vtkIdType numCells, vtkIdType connectivitySize);
377
388 bool AllocateExact(vtkIdType numVerts, vtkIdType vertConnSize, vtkIdType numLines,
389 vtkIdType lineConnSize, vtkIdType numPolys, vtkIdType polyConnSize, vtkIdType numStrips,
390 vtkIdType stripConnSize);
391
401
411 bool AllocateProportional(vtkPolyData* pd, double ratio);
412
419 void Allocate(vtkIdType numCells = 1000, int vtkNotUsed(extSize) = 1000)
420 {
421 this->AllocateExact(numCells, numCells);
422 }
423
434 void Allocate(vtkPolyData* inPolyData, vtkIdType numCells = 1000, int vtkNotUsed(extSize) = 1000)
435 {
437 inPolyData, static_cast<double>(numCells) / inPolyData->GetNumberOfCells());
438 }
439
447 vtkIdType InsertNextCell(int type, int npts, const vtkIdType pts[]) VTK_SIZEHINT(pts, npts);
448
457
462 void Reset();
463
472
476 bool NeedToBuildCells() { return this->Cells == nullptr; }
477
484 void BuildLinks(int initialSize = 0);
485
487
490 vtkSetSmartPointerMacro(Links, vtkAbstractCellLinks);
491 vtkGetSmartPointerMacro(Links, vtkAbstractCellLinks);
493
500
505
507
511 void GetPointCells(vtkIdType ptId, vtkIdType& ncells, vtkIdType*& cells)
512 VTK_SIZEHINT(cells, ncells);
514
521
533 inline unsigned char GetCellPoints(vtkIdType cellId, vtkIdType& npts, vtkIdType const*& pts)
534 VTK_SIZEHINT(pts, npts);
535
550 inline void GetCellPoints(vtkIdType cellId, vtkIdType& npts, vtkIdType const*& pts,
551 vtkIdList* ptIds) VTK_SIZEHINT(pts, npts) override;
552
557 int IsTriangle(int v1, int v2, int v3);
558
567
572 int IsPointUsedByCell(vtkIdType ptId, vtkIdType cellId);
573
582 void ReplaceCell(vtkIdType cellId, vtkIdList* ids);
583 void ReplaceCell(vtkIdType cellId, int npts, const vtkIdType pts[]) VTK_SIZEHINT(pts, npts);
585
587
596 inline void ReplaceCellPoint(vtkIdType cellId, vtkIdType oldPtId, vtkIdType newPtId);
597 inline void ReplaceCellPoint(
598 vtkIdType cellId, vtkIdType oldPtId, vtkIdType newPtId, vtkIdList* cellPointIds);
600
605 void ReverseCell(vtkIdType cellId);
606
608
612 void DeletePoint(vtkIdType ptId);
613 void DeleteCell(vtkIdType cellId);
615
625
627
636 vtkIdType InsertNextLinkedPoint(double x[3], int numLinks);
638
645 vtkIdType InsertNextLinkedCell(int type, int npts, const vtkIdType pts[]) VTK_SIZEHINT(pts, npts);
646
656 void ReplaceLinkedCell(vtkIdType cellId, int npts, const vtkIdType pts[]) VTK_SIZEHINT(pts, npts);
657
665 void RemoveCellReference(vtkIdType cellId);
666
674 void AddCellReference(vtkIdType cellId);
675
684
693
699 void ResizeCellList(vtkIdType ptId, int size);
700
704 void Initialize() override;
705
707
710 virtual int GetPiece();
711 virtual int GetNumberOfPieces();
713
717 virtual int GetGhostLevel();
718
727 unsigned long GetActualMemorySize() override;
728
730
733 void ShallowCopy(vtkDataObject* src) override;
734 void DeepCopy(vtkDataObject* src) override;
736
744
746
752
771 enum
772 {
780 };
781
783 int GetScalarFieldCriticalIndex(vtkIdType pointId, int fieldId);
784 int GetScalarFieldCriticalIndex(vtkIdType pointId, const char* fieldName);
785
794
799
809 unsigned char GetCell(vtkIdType cellId, const vtkIdType*& pts);
810
811protected:
813 ~vtkPolyData() override;
814
816
819
821
822 // points inherited
823 // point data (i.e., scalars, vectors, normals, tcoords) inherited
828
829 // supporting structures for more complex topological operations
830 // built only when necessary
833
835
836 // Take into account only points that belong to at least one cell.
837 double CellsBounds[6];
838
840
841private:
842 void Cleanup();
843
844 vtkPolyData(const vtkPolyData&) = delete;
845 void operator=(const vtkPolyData&) = delete;
846};
847
848//------------------------------------------------------------------------------
850{
851 return (this->GetNumberOfVerts() + this->GetNumberOfLines() + this->GetNumberOfPolys() +
852 this->GetNumberOfStrips());
853}
854
855//------------------------------------------------------------------------------
857{
858 if (!this->Cells)
859 {
860 this->BuildCells();
861 }
862 return static_cast<int>(this->Cells->GetTag(cellId).GetCellType());
863}
864
865//------------------------------------------------------------------------------
867{
868 if (!this->Cells)
869 {
870 this->BuildCells();
871 }
872 switch (this->GetCellType(cellId))
873 {
874 case VTK_EMPTY_CELL:
875 return 0;
876 case VTK_VERTEX:
877 return 1;
878 case VTK_LINE:
879 return 2;
880 case VTK_TRIANGLE:
881 return 3;
882 case VTK_QUAD:
883 return 4;
884 case VTK_POLY_VERTEX:
885 return this->Verts ? this->Verts->GetCellSize(this->GetCellIdRelativeToCellArray(cellId)) : 0;
886 case VTK_POLY_LINE:
887 return this->Lines ? this->Lines->GetCellSize(this->GetCellIdRelativeToCellArray(cellId)) : 0;
888 case VTK_POLYGON:
889 return this->Polys ? this->Polys->GetCellSize(this->GetCellIdRelativeToCellArray(cellId)) : 0;
891 return this->Strips ? this->Strips->GetCellSize(this->GetCellIdRelativeToCellArray(cellId))
892 : 0;
893 }
894 vtkWarningMacro(<< "Cell type not supported.");
895 return 0;
896}
897
898//------------------------------------------------------------------------------
900{
901 vtkIdType npts;
902 const vtkIdType* pts;
903
904 this->GetCellPoints(cellId, npts, pts);
905 for (vtkIdType i = 0; i < npts; i++)
906 {
907 if (pts[i] == ptId)
908 {
909 return 1;
910 }
911 }
912
913 return 0;
914}
915
916//------------------------------------------------------------------------------
918{
919 static_cast<vtkCellLinks*>(this->Links.Get())->DeletePoint(ptId);
920}
921
922//------------------------------------------------------------------------------
924{
925 this->Cells->GetTag(cellId).MarkDeleted();
926}
927
928//------------------------------------------------------------------------------
930{
931 const vtkIdType* pts;
932 vtkIdType npts;
933
934 this->GetCellPoints(cellId, npts, pts);
935 auto links = static_cast<vtkCellLinks*>(this->Links.Get());
936 for (vtkIdType i = 0; i < npts; i++)
937 {
938 links->RemoveCellReference(cellId, pts[i]);
939 }
940}
941
942//------------------------------------------------------------------------------
944{
945 const vtkIdType* pts;
946 vtkIdType npts;
947
948 this->GetCellPoints(cellId, npts, pts);
949 auto links = static_cast<vtkCellLinks*>(this->Links.Get());
950 for (vtkIdType i = 0; i < npts; i++)
951 {
952 links->AddCellReference(cellId, pts[i]);
953 }
954}
955
956//------------------------------------------------------------------------------
957inline void vtkPolyData::ResizeCellList(vtkIdType ptId, int size)
958{
959 static_cast<vtkCellLinks*>(this->Links.Get())->ResizeCellList(ptId, size);
960}
961
962//------------------------------------------------------------------------------
964{
965 switch (tag.GetTarget())
966 {
968 return this->Verts;
970 return this->Lines;
972 return this->Polys;
974 return this->Strips;
975 }
976 return nullptr; // unreachable
977}
978
979//------------------------------------------------------------------------------
981{
983 this->ReplaceCellPoint(cellId, oldPtId, newPtId, ids);
984}
985
986//------------------------------------------------------------------------------
988 vtkIdType cellId, vtkIdType oldPtId, vtkIdType newPtId, vtkIdList* cellPointIds)
989{
990 if (!this->Cells)
991 {
992 this->BuildCells();
993 }
994 vtkIdType npts;
995 const vtkIdType* pts;
996 this->GetCellPoints(cellId, npts, pts, cellPointIds);
997 for (vtkIdType i = 0; i < npts; i++)
998 {
999 if (pts[i] == oldPtId)
1000 {
1001 const TaggedCellId tag = this->Cells->GetTag(cellId);
1002 vtkCellArray* cells = this->GetCellArrayInternal(tag);
1003 cells->ReplaceCellPointAtId(tag.GetCellId(), i, newPtId);
1004 break;
1005 }
1006 }
1007}
1008
1009//------------------------------------------------------------------------------
1010unsigned char vtkPolyData::GetCellPoints(vtkIdType cellId, vtkIdType& npts, vtkIdType const*& pts)
1011{
1012 if (!this->Cells)
1013 {
1014 this->BuildCells();
1015 }
1016
1017 const TaggedCellId tag = this->Cells->GetTag(cellId);
1018 if (tag.IsDeleted())
1019 {
1020 npts = 0;
1021 pts = nullptr;
1022 return VTK_EMPTY_CELL;
1023 }
1024
1025 vtkCellArray* cells = this->GetCellArrayInternal(tag);
1026 cells->GetCellAtId(tag.GetCellId(), npts, pts);
1027 return tag.GetCellType();
1028}
1029
1030//------------------------------------------------------------------------------
1032 vtkIdType cellId, vtkIdType& npts, vtkIdType const*& pts, vtkIdList* ptIds)
1033{
1034 if (!this->Cells)
1035 {
1036 this->BuildCells();
1037 }
1038
1039 const TaggedCellId tag = this->Cells->GetTag(cellId);
1040 if (tag.IsDeleted())
1041 {
1042 npts = 0;
1043 pts = nullptr;
1044 }
1045 else
1046 {
1047 vtkCellArray* cells = this->GetCellArrayInternal(tag);
1048 cells->GetCellAtId(tag.GetCellId(), npts, pts, ptIds);
1049 }
1050}
1051
1052VTK_ABI_NAMESPACE_END
1053#endif
object to represent cell connectivity
void GetCellAtId(vtkIdType cellId, vtkIdType &cellSize, vtkIdType const *&cellPoints, vtkIdList *ptIds) override
Return the point ids for the cell at cellId.
void ReplaceCellPointAtId(vtkIdType cellId, vtkIdType cellPointIndex, vtkIdType newPointId)
Replaces the pointId at cellPointIndex of a cell with newPointId.
abstract class to specify cell behavior
Definition vtkCell.h:130
virtual vtkCell * GetCell(vtkIdType cellId)=0
Get cell with cellId such that: 0 <= cellId < NumberOfCells.
Detect and break reference loops.
provides thread-safe access to cells
list of point or cell ids
Definition vtkIdList.h:135
Abstract class in support of both point location and point insertion.
a simple class to control print indentation
Definition vtkIndent.h:108
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
Allocate and hold a VTK object.
Definition vtkNew.h:168
void GetCellPoints(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.
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,...
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.
double CellsBounds[6]
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 Allocate(vtkPolyData *inPolyData, vtkIdType numCells=1000, int extSize=1000)
Similar to the method above, this method allocates initial storage for vertex, line,...
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.
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.
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
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 GetPointCells(vtkIdType ptId, vtkIdType &ncells, vtkIdType *&cells)
Special (efficient) operations on poly data.
int GetDataObjectType() VTK_FUTURE_CONST override
Return what type of dataset this is.
vtkPolyData_detail::TaggedCellId TaggedCellId
vtkSmartPointer< vtkAbstractCellLinks > Links
void ShallowCopy(vtkDataObject *src) override
Shallow and Deep copy.
vtkSmartPointer< vtkCellArray > Strips
void DeleteCell(vtkIdType cellId)
Mark a point/cell as deleted from this vtkPolyData.
void Allocate(vtkIdType numCells=1000, int extSize=1000)
Method allocates initial storage for vertex, line, polygon, and triangle strip arrays.
@ ERR_NON_MANIFOLD_STAR
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...
int GetMinSpatialDimension() override
Get the maximum/minimum spatial dimensionality of the data which is the maximum/minimum dimension of ...
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
int GetMaxSpatialDimension() override
Get the maximum/minimum spatial dimensionality of the data which is the maximum/minimum dimension of ...
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.
vtkCellArray * GetPolys()
Get the cell array defining polygons.
void AddCellReference(vtkIdType cellId)
Add references to cell in cell structure.
void ReportReferences(vtkGarbageCollector *) override
vtkSmartPointer< vtkCellArray > Lines
void GetCellEdgeNeighbors(vtkIdType cellId, vtkIdType p1, vtkIdType p2, vtkIdList *cellIds)
Get the neighbors at an edge.
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.
static vtkPolyData * GetData(vtkInformation *info)
Retrieve an instance of this class from an information object.
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.
void BuildCells()
Create data structure that allows random access of cells.
vtkPolyData_detail::CellMap CellMap
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 BuildLinks(int initialSize=0)
Create upward links from points to cells that use each point.
vtkIdType GetCellSize(vtkIdType cellId) override
Standard vtkDataSet interface.
void DeleteLinks()
Release the upward links from point to cells that use each point.
vtkMTimeType GetMeshMTime() override
Return the mesh (geometry/topology) modification time.
void ReverseCell(vtkIdType cellId)
Reverse the order of point ids defining the cell.
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...
Hold a reference to a vtkObjectBase instance.
record modification and/or execution time
unsigned char GetCellType() const noexcept
vtkIdType GetCellId() const noexcept
@ VTK_TRIANGLE_STRIP
Definition vtkCellType.h:43
@ VTK_POLY_LINE
Definition vtkCellType.h:41
@ VTK_TRIANGLE
Definition vtkCellType.h:42
@ VTK_POLYGON
Definition vtkCellType.h:44
@ VTK_EMPTY_CELL
Definition vtkCellType.h:37
@ VTK_LINE
Definition vtkCellType.h:40
@ VTK_QUAD
Definition vtkCellType.h:46
@ VTK_VERTEX
Definition vtkCellType.h:38
@ VTK_POLY_VERTEX
Definition vtkCellType.h:39
#define vtkDataArray
int vtkIdType
Definition vtkType.h:363
vtkTypeUInt32 vtkMTimeType
Definition vtkType.h:318
@ VTK_POLY_DATA
Definition vtkType.h:109
#define VTK_SIZEHINT(...)
#define VTK_MARSHALAUTO