Giriş
Şu satırı dahil ederiz.
Örnek
Elimizde kendi point yapımız olsun.
Şöyle yaparız.
Şu satırı dahil ederiz.
#include <boost/geometry.hpp>
#include <boost/geometry/geometries/register/point.hpp>
#include <boost/geometry/geometries/register/box.hpp>
#include <boost/geometry/index/rtree.hpp>
Şu satırı dahil ederiz.namespace bg = boost::geometry;
namespace bgi = boost::geometry::index;
BOOST_GEOMETRY_REGISTER_POINT_2DÖrnek
Elimizde kendi point yapımız olsun.
struct my_point
{
float x, y;
my_point(float _x, float _y) : x(_x), y(_y) {}
};
Şöyle yaparız.// Register the point type
BOOST_GEOMETRY_REGISTER_POINT_2D(my_point, float, cs::cartesian, x, y)
Noktaları bir vector'e doldururuz. Şöyle yaparız.std::vector<std::pair<my_point, int>> pts;
pts.emplace_back(std::make_pair(my_point(2,2), 5));
pts.emplace_back(std::make_pair(my_point(3,3), 1));
pts.emplace_back(std::make_pair(my_point(4,5), 3));
pts.emplace_back(std::make_pair(my_point(4,4), 12));
pts.emplace_back(std::make_pair(my_point(1,2), 50));
Daha sonra vector ile bir rtree kurarız. Şöyle yaparız.bgi::rtree<std::pair<my_point, int>, bgi::dynamic_rstar>
rtree (pts, bgi::dynamic_rstar(pts.size()));
ÖrnekŞöyle yaparız.
using Point = std::pair<int,int>;
BOOST_GEOMETRY_REGISTER_POINT_2D(Point, int, boost::geometry::cs::cartesian, first,second)
Şöyle yaparız.std::vector<Point> v{ { 0,3 },{ 1,4 },{ 2,2 },{ 1,0 },{ 0,0 },{ 2,0 },{ 0,1 },{ 0,2 },
{ 3,1 },{ 3,3 },{ 4,4 },{ 4,3 },{ 4,2 } };
using Polygon = boost::geometry::model::polygon<Point>;
Polygon poly, hull;
poly.outer().assign(v.begin(), v.end());
boost::geometry::convex_hull (poly, hull);
Hiç yorum yok:
Yorum Gönder