.
.
.
.
.
Şöyle
yaparız.
typedef boost::geometry::model::d2::point_xy<double> boostPoint;
point Sınıfı
Şu satırı dahil
ederiz.
#include <boost/geometry/geometries/point.hpp>
Tanımlama
Şöyle
yaparız.
typedef bg::model::point<double, 2, bg::cs::cartesian> point;
Constructor
Şöyle
yaparız.
point(1., 0.)
Point İçin Free Style Metodlar
distance
İki nokta arasındaki mesafeyi verir. Şöyle
yaparız.
boostPoint boostPt1 = ...;
boostPoint boostPt2 = ...;
double distance= boost::geometry::distance(boostPt1, boostPt2);
Şu satırı dahil
ederiz.
#include <boost/geometry/geometries/polygon.hpp>
Genellikle şu satırlar da dahil edilir.
#include <boost/geometry.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
Kapalı polygon
Varsayılan polygon kapalı ve saat yönündedir. Polygon doldurulurken ilk ve son noktanın aynı olması
gerekir.
Açık polygon
Şöyle
tanımlanır
polygon <point_type,true,false>
İç ve dış noktalar vector ile tutulur. Dolayısıyla vector metodları kullanılabilir.
Tanımlama
Polygon noktalardan oluştuğu için Point sınıfı ile beraber tanımlanır. Şöyle
yaparız.
typedef bg::model::point <double, 2, bg::cs::cartesian> point_type;
typedef bg::model::polygon <point_type
> polygon;
Şöyle
yaparız.
typedef bg::model::d2::point_xy<double> point_type;
typedef bg::model::polygon<point_type> polygon;
Constructor
Şöyle
yaparız.
polygon p;
inner metodu
Polygon içindeki boşluklar inner dizilerine yazılır. Örnek ver.
outer metodu
Polygon dış noktaları outer dizisine yazılır. Açık polygon için şöyle
yaparız.
p.outer().push_back(point(0., 0.));
p.outer().push_back(point(1., 0.));
Kapalı polygon için şöyle
yaparız.
p.outer().push_back(point_type{10,10});
p.outer().push_back(point_type{11,10});
p.outer().push_back(point_type{10,11});
p.outer().push_back(point_type{10,10});
Yazdırma
Şöyle
yaparız.
std::cout << bg::wkt<polygon>(p) << std::endl;
Çıktı olarak şunu
alırız.
POLYGON((0 0,1 0,1 2,2 3,0 4))
Polygon İçin Free Style Metodlar
correct metodu
Şu satırı dahil
ederiz.
#include <boost/geometry/algorithms/correct.hpp>
Şöyle
yaparız.
bg::correct(p);
intersection metodu
Şöyle yaparız.
using point_type = boost::geometry::model::d2::point_xy<double>;
using polygon_type = boost::geometry::model::polygon<point_type>;
using linestring_type = boost::geometry::model::linestring<point_type>;
polygon_type polygon;
...
linestring_type linestring;
...
linestring_type output;
boost::geometry::intersection(polygon, linestring, output);
Kesişimi şöyle
dolaşırız.
for(auto iter = output.begin(); iter != output.end(); ++iter) {
cout << boost::geometry::get<0>(*iter) << " "
<< boostt::geometry::get<1>(*iter) << endl;
}
Çıktı olarak şunu
alırız.
// The output is:
// 11 10
// 12 11
is_valid metodu
Şu satırı dahil
ederiz.
#include <boost/geometry/algorithms/is_valid.hpp>
Şöyle
yaparız.
typedef bg::model::d2::point_xy<double> TPoint;
typedef bg::model::polygon<TPoint> TPoly;
TPoly p;
bg::read_wkt("POLYGON((1.504477611940313 3.761194029850755, ...))", p);
std::string reason;
// polys not closed!
if (!bg::is_valid(first, reason))
std::cout << "polygon not valid: " << reason << "\n";
read_wkt metodu
Şöyle
yaparız.
boost::geometry::read_wkt("POLYGON((-57.0635 -3.58045, ...))", p);
within metodu
Şöyle
yaparız.
point_type point (-57.8088, -1.5755);
bool result = boost::geometry::within (point, p);
svg_mapper Sınıfı
Giriş
Şu satırı dahil
ederiz.
#include <boost/geometry/io/svg/svg_mapper.hpp>
Tanımlama
Şöyle
yaparız.
typedef boost::geometry::model::d2::point_xy<double> point_type;
typedef boost::geometry::svg_mapper<point_type> mapper_type;
Constructor
Şöyle
yaparız.
std::ofstream svg("map.svg");
mapper_type mapper(svg, 400, 400);
add metodu
Bir çizgi eklemek için şöyle
yaparız.
typedef boost::geometry::model::d2::point_xy<double> point_type;
typedef boost::geometry::model::linestring<point_type> linestring_type;
typedef boost::geometry::svg_mapper<point_type> mapper_type;
linestring_type line {{0.0, 0.0}, {100.0, 0.0}, {400.0, 400.0}};
mapper.add (line);
Polygon eklemek için şöyle yaparız.
typedef boost::geometry::model::d2::point_xy<double> point_type;
typedef boost::geometry::model::polygon<point_type> polygon_type;
polygon_type polygon;
...
mapper.add (polygon);
map metodu
Line yazdırmak için şöyle
yaparız.
mapper.map (line, "stroke:rgb(250,0,0);stroke-width:2");
Polygon yazdırmak için şöyle yaparız.
mapper.map(polygon, "fill:rgb(255,128,0);stroke:rgb(0,0,100);stroke-width:1");
map_transformer Sınıfı
Tanımlama
Şöyle
yaparız. 4. parametre başlangıç noktasını sol alt köşe yapar.
typedef strategy::transform::map_transformer
<
calculation_type,
geometry::dimension<Point>::type::value,
geometry::dimension<Point>::type::value,
true, // <== Mirror in Y direction!!!
SameScale
> transformer_type;