提升图initialize_vertex更改顶点颜色(访客)
Boost Graph initialize_vertex change vertex color (visitor)
我想建立一个访问者(用于dikstra),initialise_vertex充当"颜色图"修饰符。我想根据条件从搜索中排除一些顶点。所以我想在算法的初始化部分设置一些顶点"黑色"。
class dijkstra_2step : public boost::default_dijkstra_visitor
{
public:
dijkstra_2step(std::vector<Weight> dists, double threshold): distances(dists), threshold(threshold) {}
// THIS PART IS NOT CORRECT!!!! //
void initialize_vertex(boost::graph_traits <unGraph>::vertex_descriptor u, const unGraph& g){
if( distances[u] > threshold ) color[u] = black; // ??????
}
//////////
std::vector<Weight> distances;
double threshold;
};
对上述访客有什么帮助吗?如何访问彩图?我在网上找不到东西。
你想要的可能是:
在 Dijkstra 的情况下,你实际上可以将任意容器(例如 std::map 甚至 std::vector)作为颜色映射传递;你只需要正确包装它:
#include "boost/graph/properties.hpp"
std::vector<int> colorMap(num_vertices(g), boost::white_color);
之后,您可以在此容器中将某些顶点标记为"黑色"。然后你必须调用dijkstra_shortest_paths_no_init
Dijkstra的变体。
dijkstra_shortest_paths_no_init(g, src, ..., ..., &colorMap[0]);
只是为了记录,获取颜色图的标准方法是使用类似
boost::property_map< unGraph, boost::vertex_color_t >::type colorMap =
boost::get(boost::vertex_color, g);
(前提是为给定的图形类型定义了此类映射)。
顺便说一句,或者,您可以使用filtered_graph而不是unGraph作为输入;您必须提供一个顶点过滤器来指定图形中的顶点。
相关文章:
- 使用 OpenGL 4.5 更改所选顶点的颜色
- 如何在顶点着色器中使用VBO数据作为位置数据,在片段着色器中使用统一数据作为颜色数据
- GLSL 将颜色数据从片段着色器发送到顶点着色器似乎总是等于 0
- CGAL:加载.off文件后,如何访问顶点颜色
- 如何将每个顶点的颜色转换为时间或某些功能
- 每帧更改顶点的颜色 (OpenGL)
- 提升图initialize_vertex更改顶点颜色(访客)
- 未绘制每个顶点处的C++OpenGL颜色
- 在 HLSL 中获取顶点的颜色
- 如何在 Ogre3D 中检索模型顶点的运行时颜色
- 绘制具有不同颜色顶点的OpenGL颜色矩形
- 在breadth_first_search期间设置顶点的颜色
- 顶点颜色不能正常工作
- 顶点缓冲对象的颜色- DirectX vs OpenGL
- 如何在顶点缓冲区中以另一种颜色绘制顶点
- glVertexAttribPointer语言 - 顶点法线或颜色
- 颜色比顶点少
- Assimp无法加载PLY模型的顶点颜色
- 当光照启用时,DirectX 9顶点颜色会消失
- Boost图形库-顶点颜色和graphviz输出的最小示例