BOOST Voronoi Visualizer

简介: BOOST Voronoi Visualizer eryar@163.com Abstract. The Voronoi extension of the Boost.Polygon library provides functionality to construct a Voronoi dia...

BOOST Voronoi Visualizer

eryar@163.com

Abstract. The Voronoi extension of the Boost.Polygon library provides functionality to construct a Voronoi diagram of a set of points and linear segments in 2D space with some limitations. The paper mainly describles how to compile the boos voronoi visualizer and use it show the example voronoi diagram result.

Key Words. Boost, Voronoi, Visualizer

1.Introduction

由Intel赞助的BOOST.POLYGON VORONOI库提供了根据二维空间中的点和线段来构造Voronoi图的功能。

wps_clip_image-6005

Figure 1.1 Voronoi Diagram generated by Boost.Polygon Voronoi library

Boost的Voronoi库有以下特点:

v 开源Open Source(Boost Software License);

v 提供对线段的支持Fully Functional with Segments;

v 稳定高效Robustness and Efficiency;

v 输出结果精确Precision of the Output Structures;

v 接口简单,易于使用Simple Interface;

v 不依赖第三方库No Third Party Dependencies;

因为是用模板实现,源码都有以头文件的形式提供,没有依赖任何第三方库,方便程序布署。程序接口简单,很容易在程序中使用,且输出结果精确,算法性能高。提供了对线段的支持,即使有些商业库也没有提供对线段的支持。

Visulalization Boost Voronoi in OpenSceneGraph 一文中已经对boost的voronoi库的用法进行介绍,本文主要介绍如何编译boost自带的显示Voronoi图程序,来对数据进行可视化。

2.Compile

因为Boost.Polygon的Voronoi库不依赖任何第三方库,而可视化程序voronoi_visualizer用到了Qt,程序的编译也很简单。配置好boost库和Qt库后就可以了。下面详细介绍在Visual Studio中使用Qt-plugin的方式的编译过程。

2.1 新建一个Qt Application

安装Visual Studio的Qt-Plugin后会在新建的界面中出现Qt相关的工程,这里创建一个Qt Application工程,如下图所示:

wps_clip_image-6008

Figure 2.1 New Project

2.2 配置工程

因为voronoi_visualizer使用到了Qt的OpenGL库,所以需要把OpenGL库选中,如下图所示:

wps_clip_image-964

Figure 2.2 Select OpenGL Library

2.3 删除文件

将程序自动生成的main.cpp和voronoivisualizer.h, voronoivisualizer.cpp删除,并将boost库的文件voronoi_visual_utils.hpp和voronoi_visualizer.cpp复制到工程所在文件夹,并添加到工程中,编译即可。

wps_clip_image-13124

Figure 2.3 voronoi visualizer

3.Show Off

编译成功后,就可以对boost的示例数据进行可视化。先通过按钮Browse Input Directory选择数据输入目录,对文件列表中的数据双击就可以显示出结果了。

wps_clip_image-31113

wps_clip_image-21148

wps_clip_image-1327

wps_clip_image-12228

wps_clip_image-13832

 

目录
相关文章
|
存储 编译器
[Eigen中文文档] 深入了解 Eigen - 类层次结构
本页面介绍了Eigen类层次结构中 Core 类的设计及其相互关系。一般用户可能不需要关注这些细节,但对于高级用户和Eigen开发人员可能会有用。
304 0
|
存储 C语言 C++
|
存储 编译器
|
存储 索引
[Eigen中文文档] 扩展/自定义Eigen(三)
本页面针对非常高级的用户,他们不害怕处理一些Eigen的内部细节。在大多数情况下,可以通过使用自定义一元或二元函数避免使用自定义表达式,而极其复杂的矩阵操作可以通过零元函数(nullary-expressions)来实现,如前一页所述。 本页面通过示例介绍了如何在Eigen中实现新的轻量级表达式类型。它由三个部分组成:表达式类型本身、包含有关表达式编译时信息的特性类和评估器类,用于将表达式评估为矩阵。
147 1
|
存储 编译器 调度
[Eigen中文文档] 固定大小的可向量化Eigen对象
本文主要解释 固定大小可向量化 的含义。
120 0
|
并行计算 算法 安全
[Eigen中文文档] Eigen 和多线程
某些 Eigen 算法可以利用硬件中存在的多个内核。
460 0
|
存储 对象存储 索引
[Eigen中文文档] 扩展/自定义Eigen(二)
CwiseNullaryOp 类的主要目的是定义过程矩阵,例如由Ones()、Zero()、Constant()、Identity()和Random()方法返回的常量或随机矩阵。然而,通过一些想象力,可以用最小的努力实现非常复杂的矩阵操作,因此很少需要实现新的表达式。
123 0
|
测试技术 API C++
[Eigen中文文档] 扩展/自定义Eigen(一)
在本节中,将介绍如何向MatrixBase添加自定义方法。由于所有表达式和矩阵类型都继承自MatrixBase,因此将方法添加到MatrixBase会立即使其对所有表达式可用!一个典型的用例是,使Eigen与另一个API兼容。
285 0
|
存储 算法 API
[Eigen中文文档] 空间变换
本页将介绍几何模块提供的多种处理 2D 和 3D 旋转以及射影或仿射变换的方法。
192 0