全国开发一个网站需要多少钱,mil后缀网站,北京保障房建设项目网站,装潢设计图片三室一厅一、前言
vtkPlaneSource创建平面#xff0c;只可以创建平行四边形的平面#xff0c;根据一个起点和两个终点创建法向量创建平面。但是当有创建多个点围成不规则平面的需求时#xff0c;该怎么创建显示呢#xff1f;
在网上查了资料#xff0c;可以使用vtkPolyData拓扑结…一、前言
vtkPlaneSource创建平面只可以创建平行四边形的平面根据一个起点和两个终点创建法向量创建平面。但是当有创建多个点围成不规则平面的需求时该怎么创建显示呢
在网上查了资料可以使用vtkPolyData拓扑结构。
二、拓扑结构
下面这篇文章很详细的说明了相关的知识理论可以参考学习。
VTK 初步 (2) ----- 基本数据结构_vtkcellarray-CSDN博客
三、代码示例
1.点
//点
void Widget::on_point_clicked()
{vtkSmartPointervtkPoints points vtkSmartPointervtkPoints::New();vtkSmartPointervtkCellArray cellArray vtkSmartPointervtkCellArray::New();vtkIdType pid[12] {0,1,2,3,4,5,6,7,8,9,10,11};points-InsertNextPoint(1, 1, 1);points-InsertNextPoint(1, 2, 0);points-InsertNextPoint(1, 1, -1);points-InsertNextPoint(1, -1, -1);points-InsertNextPoint(1, -2, 0);points-InsertNextPoint(1, -1, 1);points-InsertNextPoint(-1, 1, 1);points-InsertNextPoint(-1, 2, 0);points-InsertNextPoint(-1, 1, -1);points-InsertNextPoint(-1, -1, -1);points-InsertNextPoint(-1, -2, 0);points-InsertNextPoint(-1, -1, 1);cellArray-InsertNextCell(12,pid);vtkSmartPointervtkPolyData polyData vtkSmartPointervtkPolyData::New();polyData-SetPoints(points);polyData-SetVerts(cellArray);//点vtkSmartPointervtkPolyDataMapper mapper vtkSmartPointervtkPolyDataMapper::New();mapper-SetInputData(polyData);vtkSmartPointervtkActor actor vtkSmartPointervtkActor::New();actor-GetProperty()-SetColor((float)255/255, (float)255/255, (float)0/255);actor-GetProperty()-SetPointSize(5);actor-SetMapper(mapper);renderer-AddActor(actor);renderer-ResetCamera();ui-vtk_widget-GetRenderWindow()-Render();
} 2.线
//线
void Widget::on_line_clicked()
{vtkSmartPointervtkPoints points vtkSmartPointervtkPoints::New();vtkSmartPointervtkCellArray cellArray vtkSmartPointervtkCellArray::New();vtkIdType pid[13] {0,1,2,3,4,5,6,7,8,9,10,11,12};points-InsertNextPoint(1, 1, 1);points-InsertNextPoint(1, 2, 0);points-InsertNextPoint(1, 1, -1);points-InsertNextPoint(1, -1, -1);points-InsertNextPoint(1, -2, 0);points-InsertNextPoint(1, -1, 1);points-InsertNextPoint(-1, -1, 1);points-InsertNextPoint(-1, -2, 0);points-InsertNextPoint(-1, -1, -1);points-InsertNextPoint(-1, 1, -1);points-InsertNextPoint(-1, 2, 0);points-InsertNextPoint(-1, 1, 1);points-InsertNextPoint(1, 1, 1);cellArray-InsertNextCell(13,pid);vtkSmartPointervtkPolyData polyData vtkSmartPointervtkPolyData::New();polyData-SetPoints(points);polyData-SetLines(cellArray);//线vtkSmartPointervtkPolyDataMapper mapper vtkSmartPointervtkPolyDataMapper::New();mapper-SetInputData(polyData);vtkSmartPointervtkActor actor vtkSmartPointervtkActor::New();actor-GetProperty()-SetColor((float)255/255, (float)0/255, (float)255/255);actor-GetProperty()-SetLineWidth(3);actor-SetMapper(mapper);renderer-AddActor(actor);renderer-ResetCamera();ui-vtk_widget-GetRenderWindow()-Render();
} 3.面
//面
void Widget::on_poly_clicked()
{vtkSmartPointervtkPoints points vtkSmartPointervtkPoints::New();vtkSmartPointervtkCellArray cellArray vtkSmartPointervtkCellArray::New();vtkIdType pid[6] {0,1,2,3,4,5};points-InsertNextPoint(1, 1, 1);points-InsertNextPoint(1, 2, 0);points-InsertNextPoint(1, 1, -1);points-InsertNextPoint(1, -1, -1);points-InsertNextPoint(1, -2, 0);points-InsertNextPoint(1, -1, 1);cellArray-InsertNextCell(6,pid);vtkSmartPointervtkPolyData polyData vtkSmartPointervtkPolyData::New();polyData-SetPoints(points);polyData-SetPolys(cellArray);//面vtkSmartPointervtkPolyDataMapper mapper vtkSmartPointervtkPolyDataMapper::New();mapper-SetInputData(polyData);vtkSmartPointervtkActor actor vtkSmartPointervtkActor::New();actor-GetProperty()-SetColor((float)0/255, (float)255/255, (float)255/255);actor-SetMapper(mapper);renderer-AddActor(actor);renderer-ResetCamera();ui-vtk_widget-GetRenderWindow()-Render();
} 4.多个面
//多个面
void Widget::on_cube_clicked()
{vtkSmartPointervtkPoints points vtkSmartPointervtkPoints::New();vtkSmartPointervtkCellArray cellArray vtkSmartPointervtkCellArray::New();vtkIdType pid[18] {0,1,2,0,2,3,0,3,4,0,4,5,0,5,6,0,6,1};points-InsertNextPoint(0, 0, 0);points-InsertNextPoint(-1, -1, 1);points-InsertNextPoint(-1, -2, 0);points-InsertNextPoint(-1, -1, -1);points-InsertNextPoint(-1, 1, -1);points-InsertNextPoint(-1, 2, 0);points-InsertNextPoint(-1, 1, 1);cellArray-InsertNextCell(18,pid);vtkSmartPointervtkPolyData polyData vtkSmartPointervtkPolyData::New();polyData-SetPoints(points);polyData-SetPolys(cellArray);//面vtkSmartPointervtkPolyDataMapper mapper vtkSmartPointervtkPolyDataMapper::New();mapper-SetInputData(polyData);vtkSmartPointervtkActor actor vtkSmartPointervtkActor::New();actor-GetProperty()-SetColor((float)128/255, (float)128/255, (float)128/255);actor-SetMapper(mapper);renderer-AddActor(actor);renderer-ResetCamera();ui-vtk_widget-GetRenderWindow()-Render();
}5.三角带
//三角带
void Widget::on_strip_clicked()
{vtkSmartPointervtkPoints points vtkSmartPointervtkPoints::New();vtkSmartPointervtkCellArray cellArray vtkSmartPointervtkCellArray::New();vtkIdType pid[12] {0,1,2,3,4,5,6,7,8,9,10,11};points-InsertNextPoint(1, 1, 1);points-InsertNextPoint(1, 2, 0);points-InsertNextPoint(1, 1, -1);points-InsertNextPoint(1, -1, -1);points-InsertNextPoint(1, -2, 0);points-InsertNextPoint(1, -1, 1);points-InsertNextPoint(-1, 1, 1);points-InsertNextPoint(-1, 2, 0);points-InsertNextPoint(-1, 1, -1);points-InsertNextPoint(-1, -1, -1);points-InsertNextPoint(-1, -2, 0);points-InsertNextPoint(-1, -1, 1);cellArray-InsertNextCell(12,pid);vtkSmartPointervtkPolyData polyData vtkSmartPointervtkPolyData::New();polyData-SetPoints(points);polyData-SetStrips(cellArray);//三角带vtkSmartPointervtkPolyDataMapper mapper vtkSmartPointervtkPolyDataMapper::New();mapper-SetInputData(polyData);vtkSmartPointervtkActor actor vtkSmartPointervtkActor::New();actor-GetProperty()-SetColor((float)255/255, (float)128/255, (float)128/255);actor-GetProperty()-SetPointSize(3);actor-SetMapper(mapper);renderer-AddActor(actor);renderer-ResetCamera();ui-vtk_widget-GetRenderWindow()-Render();
} 总体