//============================================================================ // Copyright (c) Kitware, Inc. // All rights reserved. // See LICENSE.txt 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. //============================================================================ #ifndef vtk_m_filter_PointElevation_h #define vtk_m_filter_PointElevation_h #include #include namespace vtkm { namespace filter { /// \brief generate a scalar field along a specified direction /// /// Generate scalar field from a dataset. /// The scalar field values lie within a user specified range, and /// are generated by computing a projection of each dataset point onto /// a line. The line can be oriented arbitrarily. A typical example is /// to generate scalars based on elevation or height above a plane. class PointElevation : public vtkm::filter::FilterField { public: using SupportedTypes = vtkm::TypeListFieldVec3; VTKM_CONT PointElevation(); VTKM_CONT void SetLowPoint(vtkm::Float64 x, vtkm::Float64 y, vtkm::Float64 z); VTKM_CONT void SetHighPoint(vtkm::Float64 x, vtkm::Float64 y, vtkm::Float64 z); VTKM_CONT void SetRange(vtkm::Float64 low, vtkm::Float64 high); template VTKM_CONT vtkm::cont::DataSet DoExecute(const vtkm::cont::DataSet& input, const vtkm::cont::ArrayHandle& field, const vtkm::filter::FieldMetadata& fieldMeta, vtkm::filter::PolicyBase policy); private: vtkm::worklet::PointElevation Worklet; }; } } // namespace vtkm::filter #include #endif // vtk_m_filter_PointElevation_h