首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何利用Boost求出二维点的凸包面积?

如何利用Boost求出二维点的凸包面积?
EN

Stack Overflow用户
提问于 2020-05-22 16:24:24
回答 1查看 282关注 0票数 0

我是新手,我尝试的每一件事都会在充满编译器错误的屏幕上出现。以下是我的最新尝试:

代码语言:javascript
运行
复制
#include <boost/geometry/algorithm/convex_hull.hpp>
#include <boost/geometry/algorithm/area.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
#include <boost/geometry/geometries/multi_point.hpp>
#include <boost/geometry/geometries/polygon.hpp>
#include <boost/geometry/geometries/adapted/boost_tuple.hpp>

namespace bg = boost::geometry
BOOST_GEOMETRY_REGISTER_BOOST_TUPLE_CS(cs::cartesian)

double getHullArea(std::vector<double> x, std::vector<double> y) {
  typedef boost::tuple<double,double> point;
  typedef bg::model::multi_point<point> points;
  points p;
  for (size_t i=0; i<x.size(); i++) {
    bg::append(p, point(x[i],y[i]));
  }
  bg::model::polygon hull;
  bg::convex_hull(p, hull);
  return bg::area(hull);
}

我知道有一些聪明的事情可以避免多点,但我想了解我在这个基本方法上做错了什么。这些错误发生在convex_hull调用中,可能与我如何定义船体有关。

编辑:添加包含我在获取错误时使用的内容。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-22 18:15:58

问题是包括。必须包括<boost/geometry.hhp>。这样做是可行的:

代码语言:javascript
运行
复制
#include <boost/geometry.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
#include <boost/geometry/geometries/multi_point.hpp>
#include <boost/geometry/geometries/polygon.hpp>
#include <boost/geometry/geometries/adapted/boost_tuple.hpp>

namespace bg = boost::geometry
BOOST_GEOMETRY_REGISTER_BOOST_TUPLE_CS(cs::cartesian)

double getHullArea(std::vector<double> x, std::vector<double> y) {
  typedef boost::tuple<double,double> point;
  typedef bg::model::multi_point<point> points;
  points p;
  for (size_t i=0; i<x.size(); i++) {
    bg::append(p, point(x[i],y[i]));
  }
  bg::model::polygon hull;
  bg::convex_hull(p, hull);
  return bg::area(hull);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61959512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档