# Path: pcloudpy/core/filters/base.py
# class FilterBase(BaseObject):
#     """
#     Base Class for all Filter Objects
# 
#     Attributes
#     ----------
#     input_: vtkPolyData
#         Input Data  to be filtered
# 
#     output_: vtkPolyData
#         Output Data
# 
#     """
# 
#     def __init__(self):
# 
#         self.input_ = None
#         self.output_ = None
# 
#     def set_input(self, input_data):
# 
#         """
#         set input data
# 
#         Parameters
#         ----------
#         input-data : vtkPolyData
# 
#         Returns
#         -------
#         is_valid: bool
#             Returns True if the input_data is valid for processing
# 
#         """
#         if isinstance(input_data, vtkPolyData):
#             self.input_ = input_data
#             return True
#         else:
#             return False
# 
# 
#     def get_output(self):
# 
#         if self.output_:
#             return self.output_
# 
#     def update(self):
#         pass


from pcloudpy.core.filters.base import FilterBase
from vtk import vtkPolyDataAlgorithm, vtkFloatArray, vtkKdTree, vtkPlane, vtkPolyData, vtkIdList
from scipy.linalg import eigh
import numpy as np
"""
Class that define a normal estimation method based on vtkPointSetNormalsEstimation by David Doria
"""
__all__ = ["vtkPointSetNormalsEstimation"]


FIXED_NUMBER = 0
RADIUS = 1


# Path: pcloudpy/core/filters/base.py
# class FilterBase(BaseObject):
#     """
#     Base Class for all Filter Objects
# 
#     Attributes
#     ----------
#     input_: vtkPolyData
#         Input Data  to be filtered
# 
#     output_: vtkPolyData
#         Output Data
# 
#     """
# 
#     def __init__(self):
# 
#         self.input_ = None
#         self.output_ = None
# 
#     def set_input(self, input_data):
# 
#         """
#         set input data
# 
#         Parameters
#         ----------
#         input-data : vtkPolyData
# 
#         Returns
#         -------
#         is_valid: bool
#             Returns True if the input_data is valid for processing
# 
#         """
#         if isinstance(input_data, vtkPolyData):
#             self.input_ = input_data
#             return True
#         else:
#             return False
# 
# 
#     def get_output(self):
# 
#         if self.output_:
#             return self.output_
# 
#     def update(self):
#         pass


# Path: pcloudpy/core/filters/vtkPointSetNormalsEstimation.py
from pcloudpy.core.filters.base import FilterBase
from vtk import vtkPolyDataAlgorithm, vtkFloatArray, vtkKdTree, vtkPlane, vtkPolyData, vtkIdList
from scipy.linalg import eigh
import numpy as np

"""
Class that define a normal estimation method based on vtkPointSetNormalsEstimation by David Doria
"""
__all__ = ["vtkPointSetNormalsEstimation"]


FIXED_NUMBER = 0
RADIUS = 1


class vtkPointSetNormalsEstimation(FilterBase):