私は boost::geometry を試していますが、多角形と線分の交点で多角形の法線ベクトルを取得する効率的な方法を知っているかどうか疑問に思っていました。または、交差するセグメントの線 segment_id のようなものですか? 交差点を含むポリゴンの線セグメントがある場合、法線を取得する方法を理解しています。これまでのところ、
#include <boost/geometry.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
#include <boost/geometry/geometries/polygon.hpp>
#include <boost/geometry/io/wkt/wkt.hpp>
#include <boost/geometry/multi/geometries/multi_polygon.hpp>
#include <boost/assign.hpp>
int main(){
typedef model::d2::point_xy<double> point;
typedef model::ring< point > ring;
typedef model::polygon< point > polygon;
typedef model::multi_polygon< polygon > polygons;
typedef model::box< point > box;
typedef boost::geometry::model::segment<point> Segment
//Polygon
std::string poly_file="poly.dat";
polygon poly;
read_wkt(poly_file, poly);
correct(poly);
//Line segment:
polygon lineSegment;
point p0(0,-0.5);
point p1(1,0.5);
append(lineSegment, p0);
append(lineSegment, p1);
//Getting intersection:
std::vector<point> output;
intersection(poly, lineSegment, output);
//Getting normal vector at this intersection point
// ???
return 0;
}
よろしくお願いします!