gpt4 book ai didi

c++ - boost::geometry 3D 多边形相交编译错误

转载 作者:太空狗 更新时间:2023-10-29 23:04:51 27 4
gpt4 key购买 nike

此代码片段在 2D 版本中运行良好,但无法在 3D 版本中编译:

namespace bg = boost::geometry;

typedef bg::model::point<double, 3, bg::cs::cartesian> Point3D;
typedef bg::model::polygon<Point3D> Poly3D;

Poly3D p0, p1;
vector<Poly3D> result;

bg::read_wkt("POLYGON((0 0 0, 0 1 1, 1 0 0, 0 0 0))", p0);
bg::read_wkt("POLYGON((0 0 0.5, 0 11 0.5, 11 0 0.5, 0 0 0.5))", p1);

bg::intersection(p0, p1, result);

此模板错误:

1>C:\boost_1_54_0\boost/geometry/core/coordinate_dimension.hpp(89): error C2338: ( boost::mpl::equal_to < geometry::dimension<Geometry>, boost::mpl::int_<Dimensions> >::type::value )
...

谁能告诉我 intersection 调用有什么问题?我的应用程序是找到平面多边形的交集。我可以看到在一般情况下 Poly3D 不必是平面的,因此它可能是此错误的根源。有没有办法定义平面 3D 多边形类型?

最佳答案

呃。编译器告诉您所调用的算法对于 3 维无效...程序员明确说明了这一点 (area.hpp):

    BOOST_CONCEPT_ASSERT( (geometry::concept::AreaStrategy<Strategy>) );
assert_dimension<Ring, 2>();

所以。是的。不能使用 intersection 来交叉两个平面多边形。我非常确定,通过一些数学运算,您可以进行两个投影,这会导致两个交叉点,它们一起为您提供所需的信息。

关于c++ - boost::geometry 3D 多边形相交编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21320330/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com