延安市城乡建设局网站海外推广怎么做
2026/3/1 18:16:53 网站建设 项目流程
延安市城乡建设局网站,海外推广怎么做,响应式旅游网站模版,可以投稿的写作网站一#xff1a;主要的知识点 1、说明 本文只是教程内容的一小段#xff0c;因博客字数限制#xff0c;故进行拆分。主教程链接#xff1a;vtk教程——逐行解析官网所有Python示例-CSDN博客 2、知识点纪要 本段代码主要涉及的有①vtkSelectionNode的作用及使用方法 二主要的知识点1、说明本文只是教程内容的一小段因博客字数限制故进行拆分。主教程链接vtk教程——逐行解析官网所有Python示例-CSDN博客2、知识点纪要本段代码主要涉及的有①vtkSelectionNode的作用及使用方法二代码及注释import vtkmodules.vtkRenderingOpenGL2 from vtkmodules.vtkCommonColor import vtkNamedColors from vtkmodules.vtkFiltersSources import vtkPointSource from vtkmodules.vtkCommonCore import vtkIdTypeArray from vtkmodules.vtkCommonDataModel import vtkSelectionNode, vtkSelection from vtkmodules.vtkFiltersExtraction import vtkExtractSelection from vtkmodules.vtkCommonDataModel import vtkUnstructuredGrid from vtkmodules.vtkRenderingCore import ( vtkActor, vtkCamera, vtkDataSetMapper, vtkRenderWindow, vtkRenderWindowInteractor, vtkRenderer ) def main(): colors vtkNamedColors() # 创建一个包含 50 个点的随机点云数据 point_source vtkPointSource() point_source.SetNumberOfPoints(50) point_source.Update() print(point_source有, point_source.GetOutput().GetNumberOfPoints(), 个input points) vtkIdTypeArray 专门用来存放 点 ID 或 cell ID索引它的数据类型就是 vtkIdType 在vtk中 数组例如 vtkIdTypeArray, vtkDoubleArray不仅是一个一维向量它实际上是一个 二维表 tuple元组 一行数据 component分量 每行里面的列数 所以 如果 SetNumberOfComponents(1)每个 tuple 就是一个 标量一列 如果 SetNumberOfComponents(3)每个 tuple 就是一个 三维向量比如点的 (x, y, z) SetNumberOfTuples(n) 定义数组有多少个 tuple行数 SetNumberOfComponents(n) 定义每个 tuple 有多少个分量component(行数) SetNumberOfValues(n) 直接指定总的存储单元个数底层一维存储大小SetNumberOfValues(9) 等价于 (NumberOfTuples × NumberOfComponents) 9 如果前面 SetNumberOfComponents(3)那就意味着有 3 个 tuple每行 3 个数 ids vtkIdTypeArray() ids.SetNumberOfComponents(1) # ids.SetNumberOfTuples(1) # ids.SetNumberOfValues(1) for i in range(10, 20): ids.InsertNextValue(i) vtkSelectionNode 是一个 VTK 类它的主要作用是定义和存储一个数据选择的特定条件。 可以把它看作是构建一个复杂选择查询的最小单元 vtkSelectionNode 本身并不能单独完成数据选择它必须作为 vtkSelection 对象的组成部分才能生效。 每个 vtkSelectionNode 实例都包含了数据筛选的三个关键信息 字段类型 (FieldType): 告诉 VTK 你要选择什么类型的数据。常见的类型有 vtkSelectionNode.POINT选择点数据。 vtkSelectionNode.CELL选择单元面、线、体数据。 vtkSelectionNode.FIELD选择字段数据。 内容类型 (ContentType): 决定了你将如何指定选择标准。常见的类型有 vtkSelectionNode.INDICES通过索引 ID 列表来选择数据就像你代码中那样。 vtkSelectionNode.THRESHOLDS通过数据阈值来选择数据例如选择所有温度高于 50 度的点。 vtkSelectionNode.FRUSTUM通过摄像机视锥体来选择数据例如选择视线范围内的所有对象。 选择列表 (SelectionList): 这是一个 vtkIdList 或其他数据数组包含了实际的筛选值。例如如果你选择了 INDICES 类型这个列表就会包含你想要选中的所有点的 ID。 selection_node vtkSelectionNode() selection_node.SetFieldType(vtkSelectionNode.POINT) selection_node.SetContentType(vtkSelectionNode.INDICES) selection_node.SetSelectionList(ids) vtkSelection 将一个或多个 vtkSelectionNode 对象组合在一起形成一个完整的、可供过滤器使用的选择规则 AddNode添加的多个Node查询的关系或的关系例如NodeA选择所有 ID 在 1 到 10 的点 NodeB选择所有 ID 在 21 到 30 的点 那么 vtkExtractSelection 最终会返回 ID 在 1 到 10 以及 21 到 30 的所有点。这相当于一个逻辑或OR操作 如果想要实现and的操作则需要建立管道链接 selection vtkSelection() selection.AddNode(selection_node) vtkExtractSelection 它的作用是根据一个或多个选择条件从数据集中提取出一个子集 当 vtkExtractSelection 运行时它会遍历原始数据集中的所有元素点或单元检查每个元素是否满足 vtkSelection 中定义的任何一个条件。 所有满足条件的元素都会被提取出来形成一个新的、更小的数据集作为输出 extract_selection vtkExtractSelection() extract_selection.SetInputConnection(0, point_source.GetOutputPort()) extract_selection.SetInputData(1, selection) extract_selection.Update() selected vtkUnstructuredGrid() selected.ShallowCopy(extract_selection.GetOutput()) # 选中的反转 selection_node.GetProperties().Set(vtkSelectionNode().INVERSE(), 1) # invert the selection. extract_selection.Update() not_selected vtkUnstructuredGrid() not_selected.ShallowCopy(extract_selection.GetOutput()) input_mapper vtkDataSetMapper() input_mapper.SetInputConnection(point_source.GetOutputPort()) input_actor vtkActor() input_actor.SetMapper(input_mapper) input_actor.GetProperty().SetColor(colors.GetColor3d(MidnightBlue)) input_actor.GetProperty().SetPointSize(5) selected_mapper vtkDataSetMapper() selected_mapper.SetInputData(selected) selected_actor vtkActor() selected_actor.SetMapper(selected_mapper) selected_actor.GetProperty().SetColor(colors.GetColor3d(MidnightBlue)) selected_actor.GetProperty().SetPointSize(5) not_selected_mapper vtkDataSetMapper() not_selected_mapper.SetInputData(not_selected) not_selected_actor vtkActor() not_selected_actor.SetMapper(not_selected_mapper) not_selected_actor.GetProperty().SetColor(colors.GetColor3d(MidnightBlue)) not_selected_actor.GetProperty().SetPointSize(5) # There will be one render window. render_window vtkRenderWindow() render_window.SetSize(900, 300) render_window.SetWindowName(ExtractSelectedIds) # And one interactor. interactor vtkRenderWindowInteractor() interactor.SetRenderWindow(render_window) # Define viewport ranges. # (xmin, ymin, xmax, ymax) left_viewport [0.0, 0.0, 0.33, 1.0] center_viewport [0.33, 0.0, 0.66, 1.0] right_viewport [0.66, 0.0, 1.0, 1.0] # Create a camera for all renderers. camera vtkCamera() # Setup the renderers left_renderer vtkRenderer() render_window.AddRenderer(left_renderer) left_renderer.SetViewport(left_viewport) left_renderer.SetBackground(colors.GetColor3d(BurlyWood)) left_renderer.SetActiveCamera(camera) center_renderer vtkRenderer() render_window.AddRenderer(center_renderer) center_renderer.SetViewport(center_viewport) center_renderer.SetBackground(colors.GetColor3d(orchid_dark)) center_renderer.SetActiveCamera(camera) right_renderer vtkRenderer() render_window.AddRenderer(right_renderer) right_renderer.SetViewport(right_viewport) right_renderer.SetBackground(colors.GetColor3d(CornflowerBlue)) right_renderer.SetActiveCamera(camera) left_renderer.AddActor(input_actor) center_renderer.AddActor(selected_actor) right_renderer.AddActor(not_selected_actor) left_renderer.ResetCamera() render_window.Render() interactor.Start() if __name__ __main__: main()

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询