问题标签 [boost-geometry]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
9740 浏览

c++ - 在 boost::geometry 中初始化多边形

我是建议包含在 boost 中的通用几何库的新手:

我有两个向量vector<int> Xb, Yb,我试图从中创建一个多边形。我正在尝试按照以下代码片段的方式获得一些东西:

上面的代码不起作用,抱怨P没有push_back成员函数。如何从具有坐标的点初始化多边形vector<int> Xb,vector<int> Yb

0 投票
1 回答
801 浏览

c++ - 我应该在增强几何功能中使用什么

现在我正在分析增强几何中的多边形示例

http://geometrylibrary.geodan.nl/03_polygon_example_8cpp-example.html _ _

画了几条线后,如果我想得到多边形边界线和法线之间的交叉点,我应该使用什么函数?

点击查看我想要的示例图片

我想知道那些红圈点坐标。我不知道我插入的线点和多边形的组合方式

0 投票
2 回答
2080 浏览

c++ - Boost Geometry:使用二维极坐标系

我在玩 boost 1.47 中提供的新几何库,想知道是否可以定义 2D 极坐标系统。在头文件和文档中,我找到了极坐标系统的定义,但是当尝试将它与下面的示例代码一起使用时,我遇到了编译错误:

在VC2010中我得到:“错误C2039:'type':不是'boost::geometry::traits::cs_tag'的成员”尝试编译上面的距离函数时。

这是从 boost 头文件 (boost/geometry/core/cs.hpp) 中提取的极坐标系统的定义:

但我认为这个定义是不完整的,因为在其他任何地方都没有提到“极地”。我是否应该为一个简单的 2D 极坐标系统自己定义一个距离策略和其他需要的特征?

0 投票
2 回答
289 浏览

c++ - 在没有公共基类的情况下接近序列化

我正在为以下问题寻找一些设计建议:

我正在使用 boost 几何,我有几个与 boost 几何兼容的自定义几何类型(通过特征),但我使用的大多数类型都是 typedef。

我的问题是当我想序列化/反序列化我的几何图形时。

假设所有几何图形都存储在数据库的二进制字段中。如果我有一个基本几何类,我可能只写 g->type()(4 个字节)并调用 g->save(some_outputstream) 并将所有这些写入二进制字段。然后在读取二进制字段时,我只需读取字节并转换为适当的几何类型。

但是 Boost 几何没有通用的基类。

当有多种类型可以存储为二进制并且您没有共享基类时,你们通常如何处理序列化?

我在想也许有一个 Serializer 类,它返回一个 boost.Any,然后可以使用将存储在(反)序列化器中的类型来投射几何图形?但是,序列化程序需要为每种几何类型提供一个保存方法吗?例如:保存(myPolygon),保存(myPoint)

有什么想法/经验吗?

0 投票
1 回答
505 浏览

c++ - 使用Boost.Geometry时“二进制表达式的无效操作数”?

当我尝试提升几何差异函数时,我得到一个很长的编译器错误,而具有相同接口和可能相关实现的联合和交集工作:

第一个错误是:

似乎由于某种原因,迭代器的区别是返回反向迭代器而不是距离......

类型声明为:

完整的错误在这里,以防有人喜欢挖掘。
我怎样才能使这个编译?

0 投票
2 回答
5795 浏览

c++ - 从 Boost Geometry 多边形中获取点的坐标

我有一个简单的 DLL,它使用 Boost Geometry 多边形进行一些计算。(主要是交叉点和差异。)由于 DLL 很可能从 C# 代码中调用,并且从 Delphi 以及谁知道从其他地方调用,所以我应该将结果转换为所有东西都可以处理的数组。

更新: 我已经简化并稍微纠正了我的代码。新代码看起来完全不同,使用了完全不同的方法 ( for_each_point),并且不知何故仍然无法编译。

我的新代码:

当前的编译错误是:

  1. 错误 C2039: 'type' : 不是 'boost::mpl::eval_if_c' iterator.hpp 63 的成员
  2. 错误 C3203: 'type' : unspecialized class template can't be used as a template argument for template parameter 'Iterator', 应为真实类型differ_type.hpp 25
  3. 错误 C2955:'boost::type':使用类模板需要模板参数列表differ_type.hpp 25
  4. 错误 C2955:“boost::iterator_difference”:使用类模板需要模板参数列表differ_type.hpp 26

哪些看起来与这部分代码没有任何关系(我的文件名是geometry.cpp),但是使用Boost Geometry的所有其他内容都被注释掉了,我仍然得到这些错误,所以......

这是我以前的错误代码(由 sehe 编辑)

(我是 C++ 和 Boost 的新手,所以在将来自互联网的代码放在一起时,我可能错过了一些基本概念。)我假设我不能轻易地遍历多边形,我错过了非平凡的部分,或者多边形不能用作环,或者迭代不是我想象的那样,或者我不知道还有什么问题。我做错什么了?

0 投票
1 回答
1144 浏览

c++ - boost::geometry multi_point 不能像多边形一样构造

首先,非常感谢新 boost::geometry 库背后的人们!

这个问题取代了之前的一个问题,我现在将其分成两个,因为两个单独的问题变得更加清晰。

我已经阅读了http://www.boost.org/doc/libs/1_47_0/libs/geometry/doc/html/geometry/design.html,它解释了特征机制,但我不知道为什么这段代码没有编译...

第一个错误是

如果我使用多边形而不是多点,则代码可以正常工作,尽管可能有我不需要的开销。到底是怎么回事?

0 投票
1 回答
400 浏览

c++ - boost::geometry::area 无法在英特尔编译器上编译

(从之前的问题中拆分出来)。

有谁知道这里发生了什么?以下代码在 MSVC 中运行良好,但在 intel 编译器上运行良好。

最后一行(boost::geometry::area)是产生问题的那一行:

0 投票
2 回答
3961 浏览

c++ - Boost.Geometry:如何创建简单的多边形数组并将其保存为 svg 图像?

我查看了名为Boost Geometry的 grate 库 ,我查看了它,但没有看到任何关于处理任何东西的教程,至少有点图形化。所以我想知道是否有人可以帮助提供一个简单的教程来创建一些N随机 poligons(颜色大小和形式随机)并将 tham 保存为像SVG这样的矢量图像?

0 投票
2 回答
932 浏览

c++ - 有一个整数矩阵 MxN 如何将它们分组为具有增强几何形状的多边形?

我们有一个给定整数的矩阵(从 1 到 INT_MAX),比如

我们想为矩阵中的每个唯一 int 创建具有相同颜色的多边形,因此我们的多边形将具有如下所示的坐标/分组。

在此处输入图像描述

我们可以生成这样的图像:

在此处输入图像描述

其中*(因为执行的 vectirisation 将缩放到这样的大小):

在此处输入图像描述(对不起,糟糕的图纸)

是否有可能以及如何使用增强几何来做这样的事情?

更新:

所以@sehe悲伤:I'd simply let Boost Geometry do most of the work.所以我使用纯Boost.Geometry创建了这个逐像素类aeria种植者,编译,运行但我需要它在集群数据上运行..我有1000 x 1800个uchars文件(每个唯一的uchar ==数据属于该类)。这段代码的问题:在第 18 行,它变得非常缓慢,以至于每个点创建开始需要超过一秒=(

代码:

所以你可以看到我的代码suks ..所以我决定为@sehe代码创建一个渲染器:

这段代码是可编译的,但它很烂(似乎我根本不知道如何使用数组......):

在此处输入图像描述