manipulate the data
Resample the data
sampling
Decompose data into blocks
hexiles
https://vtk.org/doc/nightly/html/classvtkProbeFilter.html#details
VTK operation
probe
vtkProbFilter (maybe this can avoid the case that the original data is not the uniformgrid?) the source code is located at Filters/Core/vtkProbeFilter.h
This is a example
https://kitware.github.io/vtk-examples/site/Cxx/PolyData/InterpolateTerrain/
Find the cell and then use the cell’s interpolation function, there are multiple types of the cell
We need to have a good understanding about the vtk cell type
This examples shows all the types of the vtkCell Type
https://kitware.github.io/vtk-examples/site/Cxx/GeometricObjects/LinearCellDemo/
Even the vtkLine
(VTK/Common/DataModel/vtkLine.cxx) is an concrete example of the vtkCell
(VTK/Common/DataModel), for each cell, there are EvaluateLocation
and EvaluatePosition
function and InterpolationFunctions
, these are used to do some naive interpolation.
The dedicated point interpolation function use the different approch compared with the default one implemented by the cell operations here.
iso-parametric interpolation functions
Other types of interpolation do not have the operation of finding the cell, it just sample the points from cloud points, such as the example that use the PointInterpolator (the inputs is the list of points)
There are still some confusions about these operations, what are parametric coordinates? how to compute the weight etc
In the vtk text book here
There are some explanations about the VTK parametric coordinates
It is important to understand the meaning of the parametric coordinates in the VTK context. This coordinates are used to represents the position within the cell, its range is between 0 and 1.
Global coordinates
Local coordinates
To specify a location within the primary cell, we use geometric coordinates. These geometric coordinates, or parametric coordinates, are coordinates “natural” or canonical to the particular topology and dimension of a cell.
Every cell type will have its own parametric coordinate system
8-10 shows a 3d case, which is tr-linear iterpolation
using the vtkLine as an example, which is a concrete implementation of the vtkCell
DistanceToLine(get the parametric coordinates)
The input is the endpoint of the line and a point. The output is the distance from that point to the line and the cloestpoint to that dedicated point. The parametric coordinates is also returned here.
EvaluatePosition
This function calls the DistanceToLine to get necessary information.
It returns the if the associated point is in the line or out of the line. This function also compute the weight to interpolate the dedicated point based on givin points (the weight for p1 and p2 in this example)
EvaluateLocation
Then in actual probe operation, the pointData can use these weight values to construct the interpolated values.
This is an example code to show how the prob filter works, the coars grid is the original one and then we create a fine granularity grid based on it and use the prob to sample the data accordingly.
PointCloud
For the case that there is no cell, how could we do that? Assuming the input the data is just a point cloud. In this case, we can use the vtkPointInterpolator.
The form for using the filter is similar to the previous one, the good thing is that we can switch different interpolation kernel in this example.
This example shows that how to set the inerp kernel, this is different since the input is supposed to be the points clouds, which is more flexible compared with the previous one for cellset.