vtkCurvatures curve1 = new vtkCurvatures();
curve1.SetInputConnection(ClipData.GetOutputPort()); //ClipData.GetOutputPort()为待计算的polydata,绝大多数polydata可以直接拿来用。
//curve1.SetCurvatureTypeToGaussian();
curve1.SetCurvatureTypeToMean();//设定需要的曲面曲率类型
curve1.Update();
int datasize = curve1.GetOutput().GetPointData().GetAttribute(0).GetSize(); //计算点数,用于shu
MessageBox.Show(datasize.ToString());
vtkDoubleArray vtkDArray = new vtkDoubleArray(curve1.GetOutput().GetPointData().GetAttribute(0).GetNativePointer(),true);
double[] CurvImage = new double[datasize];
for (int i = 0; i < datasize; i++)
{
CurvImage[i] = vtkDArray.GetValue(i);
}
StreamWriter SW = new StreamWriter("Curve.raw");//将每个点的曲率输出到文件。
foreach (double dd in CurvImage)
{
SW.WriteLine(dd.ToString());
}
SW.Close();
vtkLookupTable lut1 = new vtkLookupTable();//配置LUT,这里随便设的
lut1.SetNumberOfTableValues(256);
lut1.SetHueRange(0.1,1.0);
lut1.SetSaturationRange(0, 1.0);
lut1.SetValueRange( 0, 1.0);
lut1.SetAlphaRange( 0,1.0);
lut1.SetRange( -1, 1);
vtkPolyDataMapper cmapper1 = new vtkPolyDataMapper();
cmapper1.SetInputConnection (curve1.GetOutputPort());
cmapper1.SetLookupTable( lut1);
cmapper1.SetUseLookupTableScalarRange( 1);
vtkActor cActor1 = new vtkActor ();
cActor1.SetMapper( cmapper1);
cActor1.SetPosition( -0.5, 0.0, 0.0);
aRenderer.AddActor(cActor1);
iren.Render(); //渲染