You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

76 lines
2.8 KiB
C

/*=========================================================================
Program: Visualization Toolkit
Module: vtkNonMergingPointLocator.h
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
/**
* @class vtkNonMergingPointLocator
* @brief direct / check-free point insertion.
*
*
* As a special sub-class of vtkPointLocator, vtkNonMergingPointLocator is
* intended for direct / check-free insertion of points into a vtkPoints
* object. In other words, any given point is always directly inserted.
* The name emphasizes the difference between this class and its sibling
* class vtkMergePoints in that the latter class performs check-based zero
* tolerance point insertion (or to 'merge' exactly duplicate / coincident
* points) by exploiting the uniform bin mechanism employed by the parent
* class vtkPointLocator. vtkPointLocator allows for generic (zero and non-
* zero) tolerance point insertion as well as point location.
*
* @sa
* vtkIncrementalPointLocator vtkPointLocator vtkMergePoints
*/
#ifndef vtkNonMergingPointLocator_h
#define vtkNonMergingPointLocator_h
#include "vtkCommonDataModelModule.h" // For export macro
#include "vtkPointLocator.h"
class vtkPoints;
class VTKCOMMONDATAMODEL_EXPORT vtkNonMergingPointLocator : public vtkPointLocator
{
public:
static vtkNonMergingPointLocator* New();
vtkTypeMacro(vtkNonMergingPointLocator, vtkPointLocator);
void PrintSelf(ostream& os, vtkIndent indent) override;
/**
* Determine whether a given point x has been inserted into the points list.
* Return the id of the already inserted point if it is true, or -1 else.
* Note this function always returns -1 since any point is always inserted.
*/
vtkIdType IsInsertedPoint(const double[3]) override { return -1; }
vtkIdType IsInsertedPoint(double, double, double) override { return -1; }
/**
* Determine whether a given point x has been inserted into the points list.
* Return 0 if a duplicate has been inserted in the list, or 1 else. Note
* this function always returns 1 since any point is always inserted. The
* index of the point is returned via ptId.
*/
int InsertUniquePoint(const double x[3], vtkIdType& ptId) override;
protected:
vtkNonMergingPointLocator() {}
~vtkNonMergingPointLocator() override {}
private:
vtkNonMergingPointLocator(const vtkNonMergingPointLocator&) = delete;
void operator=(const vtkNonMergingPointLocator&) = delete;
};
#endif