《VTK图形图像开发进阶》第3章VTK基本数据结构——属性数据

发布时间 2023-08-11 10:37:22作者: sdyan404

属性数据(Attribute Data)是与数据集组织结构相关联的信息。

image

3.1 标量数据

#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkRenderingFreeType);
VTK_MODULE_INIT(vtkInteractionStyle);

#include <vtkSmartPointer.h>
#include <vtkPoints.h>
#include <vtkPolyData.h>
#include <vtkPointData.h>
#include <vtkDoubleArray.h>
#include <vtkFloatArray.h>

int main(int, char *[])
{
	//创建点集数据:包含两个坐标点。
	vtkSmartPointer<vtkPoints> points = vtkSmartPointer<vtkPoints>::New();
	points->InsertNextPoint(0,0,0);
	points->InsertNextPoint(1,0,0);

	//创建多边形数据。
	vtkSmartPointer<vtkPolyData> polydata = vtkSmartPointer<vtkPolyData>::New();
	polydata->SetPoints(points);

	//准备加入点数据的标量值,两个标量值分别为1和2。
	vtkSmartPointer<vtkDoubleArray> weights = vtkSmartPointer<vtkDoubleArray>::New();
	weights->SetNumberOfValues(2);
	weights->SetValue(0, 1);
	weights->SetValue(1, 2);

	//先获取多边形数据的点数据指针,然后设置该点数据的标量属性值。
	polydata->GetPointData()->SetScalars(weights);

	//输出索引号为0的点的标量值。
	double weight = vtkDoubleArray::SafeDownCast(polydata->GetPointData()->GetScalars())->GetValue(0);
	std::cout << "double weight: " << weight << std::endl;

	return EXIT_SUCCESS;
}

image

3.2 矢量数据

image

3.3 纹理坐标

image

3.4 张量数据

image