2019-09-09 13:39:23 +00:00
|
|
|
//============================================================================
|
|
|
|
// 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.
|
|
|
|
//============================================================================
|
|
|
|
#define vtkm_filter_Contour_cxx
|
|
|
|
#include <vtkm/filter/Contour.h>
|
|
|
|
|
|
|
|
namespace vtkm
|
|
|
|
{
|
|
|
|
namespace filter
|
|
|
|
{
|
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
2020-11-17 19:37:05 +00:00
|
|
|
Contour::Contour()
|
2019-09-09 13:39:23 +00:00
|
|
|
: vtkm::filter::FilterDataSetWithField<Contour>()
|
|
|
|
, IsoValues()
|
|
|
|
, GenerateNormals(false)
|
|
|
|
, AddInterpolationEdgeIds(false)
|
|
|
|
, ComputeFastNormalsForStructured(false)
|
|
|
|
, ComputeFastNormalsForUnstructured(true)
|
|
|
|
, NormalArrayName("normals")
|
|
|
|
, InterpolationEdgeIdsArrayName("edgeIds")
|
|
|
|
, Worklet()
|
|
|
|
{
|
|
|
|
// todo: keep an instance of marching cubes worklet as a member variable
|
|
|
|
}
|
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
2020-11-17 19:37:05 +00:00
|
|
|
void Contour::SetNumberOfIsoValues(vtkm::Id num)
|
2019-09-09 13:39:23 +00:00
|
|
|
{
|
|
|
|
if (num >= 0)
|
|
|
|
{
|
|
|
|
this->IsoValues.resize(static_cast<std::size_t>(num));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
2020-11-17 19:37:05 +00:00
|
|
|
vtkm::Id Contour::GetNumberOfIsoValues() const
|
2019-09-09 13:39:23 +00:00
|
|
|
{
|
|
|
|
return static_cast<vtkm::Id>(this->IsoValues.size());
|
|
|
|
}
|
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
2020-11-17 19:37:05 +00:00
|
|
|
void Contour::SetIsoValue(vtkm::Id index, vtkm::Float64 v)
|
2019-09-09 13:39:23 +00:00
|
|
|
{
|
|
|
|
std::size_t i = static_cast<std::size_t>(index);
|
|
|
|
if (i >= this->IsoValues.size())
|
|
|
|
{
|
|
|
|
this->IsoValues.resize(i + 1);
|
|
|
|
}
|
|
|
|
this->IsoValues[i] = v;
|
|
|
|
}
|
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
2020-11-17 19:37:05 +00:00
|
|
|
void Contour::SetIsoValues(const std::vector<vtkm::Float64>& values)
|
2019-09-09 13:39:23 +00:00
|
|
|
{
|
|
|
|
this->IsoValues = values;
|
|
|
|
}
|
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
2020-11-17 19:37:05 +00:00
|
|
|
vtkm::Float64 Contour::GetIsoValue(vtkm::Id index) const
|
2019-09-09 13:39:23 +00:00
|
|
|
{
|
|
|
|
return this->IsoValues[static_cast<std::size_t>(index)];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|