请原谅我,因为我对VTK 和 C ++很新,但是我开始对它进行处理,但我想我不确定从这里开始。
我正在制作图表,当你选择顶点和边时,它会显示哪些被选中(我用this教程作为起点)。它做得非常好,除了使用我给每个顶点给出的标签,它只是使用它创建的顺序(或说默认值)。我做了一点研究,看到你可以使用一个谱系ID数组作为顶点(我不知道边缘,但我一步一步),这将作为自定义ID,但我无法想象如何实现这一点。
所以我想我的主要问题是:
- 我可以为以后可以参考的每个顶点制作自定义ID吗?
- 我也可以用边缘做这个吗?
- 我该如何解决这个问题?
提前感谢您的帮助!
答案 0 :(得分:0)
查看vtk文档,vtkGraph
类有2个方法GetVertexData ()
和GetEdgeData ()
,它们返回vtkDataSetAttributes
的实例。该类允许将vtkAbstractArray
(vtkIdType数组,字符串数组......等)设置为PedigreeIds。您可以从图表中填充此数组,并将您的谱系id设置在所需顶点的相同位置,以“标记”顶点(或边缘)。
其他解决方案是创建一个关联数组,如std::map<vtkIdType, vtkIdType>
,其ID为关键字,顶点ID关联为值。它允许您从选择的ID中获取图表中的“真实”ID。
您可以更改一个顶点的Id,但必须使用它来检查其他边,更改引用并设置您选择的新ID,查找和修改链接的每个顶点/边可能会很昂贵修改后的身份证。
您可以使用与顶点关联的vtkGraphLayoutView
类为表示设置一些标签,但它不是Graph实例的内部标签,而是用于渲染。它不应该用于“重新标记”ID。
我没有测试任何这些解决方案。我希望它会有所帮助。