zoukankan      html  css  js  c++  java
  • 06

    在先前的vtk中,如vtkPointSetAlgorithm 等算法派生类中定义了虚方法:ExecuteInformation() 和 ExecuteData()。这些方法的定义是为了平稳的从VTK4到VTK5中。我们从如下的类中删除了ExecuteInformation() 和 ExecuteData():

    • vtkDataObjectAlgorithm
    • vtkGenericDataSetAlgorithm
    • vtkHyperOctreeAlgorithm
    • vtkPiecewiseFunctionAlgorithm
    • vtkPolyDataAlgorithm
    • vtkRectilinearGridAlgorithm
    • vtkSelectionAlgorithm
    • vtkStructuredGridAlgorithm
    • vtkUnstructuredGridAlgorithm

    任何上面的派生类都应该改ExecuteInformation() 和 ExecuteData()变成 RequestInformation() 和 RequestData()。应该利用这个机会使用输入输出信息对象访问输入输出数据对象,相对于GetInput() 和 GetOutput()。这儿有一个列外类vtkImageAlgorithm仍然支持 ExecuteData() 和 Execute()。

    例子1:


    void vtkMyReader::ExecuteInformation()
    {
       vtkImageData* output = this->GetOutput();
       output->SetWholeExtent(…);
       output->SetScalarType(VTK_UNSIGNED_CHAR);
    }

    替换成:

    int vtkMyReader::RequestInformation(vtkInformation*, vtkInformationVector**, 
           vtkInformationVector* outInfoVec)
    {
       vtkInformation* outInfo = outInfoVec->GetInformationObject(0);
       outInfo->Set(vtkStreamingDemandDrivenPipeline::WHOLE_EXTENT(), …);
        vtkDataObject::SetPointDataActiveScalarInfo(
           outInfo, VTK_UNSIGNED_CHAR, 1);
       return 1;
    }

    例子2:


    void vtkMyAlgorithm::Execute()
    {
     
       vtkImageData* input= this->GetInput();
       vtkPolyData* output = this->GetOutput();

    替换成:

    int vtkMyReader::RequestData(vtkInformation*, 
          vtkInformationVector**, inInfoVec, 
           vtkInformationVector* outInfoVec)
    {
        vtkImageData* input = vtkImageData::GetData(inInfoVec[0]);
        vtkPolyData* output = vtkPolyData::GetData(outInfoVec);
  • 相关阅读:
    利用JavaScriptCore实现以下简单的功能(平方和)
    UIScrollView 实现比例缩放
    iOS 本地加载js文件
    UIScrollView现实自动循环滚动
    UIScrollView现实循环滚动
    swift
    swift
    swift
    swift
    swift
  • 原文地址:https://www.cnblogs.com/ankier/p/3168495.html
Copyright © 2011-2022 走看看