QT&VTK(三) 如何对.vtk文件中的数据进行二次操作

9 篇文章 9 订阅

有时候即使获取了所有属性,我们仍无法满足我们的需求,比如对于矢量数据,我们有时候也需要将其中的X,Y,Z值,以及模值读出或者算出进行scalar形式的显示。这里的算法思路大概就是新实例化一个属性类,然后将原属性的值,一一计算后重新赋给新属性实例,然后再显示。

以下是显示矢量模值,X,Y,Z等分量的代码,张量同理

vtkIdType numPoints=yMeshPoints->GetNumberOfPoints();
vtkSmartPointer<vtkFloatArray> tempDataset=vtkSmartPointer<vtkFloatArray>::New();
tempDataset->Reset();
tempDataset->SetNumberOfComponents(1);//单个数据维度,标量-1, 矢量-3,张量-9
tempDataset->SetNumberOfTuples(numPoints);//数据量
vtkSmartPointer<vtkDataArray> vectorData=yDatasetAttributesPoint->GetVectors(name.c_str());
double *temP;
for(int i=0;i<numPoints;i++){
            temP=vectorData->GetTuple3(i);
            switch(n){
                    case 0:{
                        double n1=qPow(temP[0],2)+qPow(temP[1],2)+qPow(temP[2],2);
                        double magnitude=qPow(n1,0.5);
                        tempDataset->InsertTuple1(i,magnitude);
                        break;
                    }
                    case 1:{
                        tempDataset->InsertTuple1(i,temP[0]);
                        break;
                    }
                    case 2:{
                        tempDataset->InsertTuple1(i,temP[1]);
                        break;
                    }
                    case 3:{
                        tempDataset->InsertTuple1(i,temP[2]);
                        break;
                    }
                }
}
polyData->GetPointData()->SetScalars(tempDataset);
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值