使用boost::geometry::segment_intersection_points求线段交点
在计算机图形学中,常常需要求解两条线段之间的交点,这个问题在实际应用中非常常见,比如道路交叉口、水利工程、城市规划等。在C++中,我们可以使用Boost库来快速地解决这个问题。
Boost.Geometry是一个C++库,提供了许多空间计算的功能,其中包括了求解线段交点的函数——boost::geometry::segment_intersection_points。
下面是一个求解两条线段交点的示例程序:
#include <iostream>
#include <vector>
#include <boost/geometry.hpp>
namespace bg = boost::geometry;
int main()
{
typedef bg::model::point<double, 2, bg::cs::cartesian> point;
typedef bg::model::segment<point> segment;
std::vector<point> intersection_points;
point p1(0, 0), p2(10, 10), p3(0, 10), p4(10, 0);
segment s1(p1, p2), s2(p3, p4);
bg::intersection(s1, s2, intersection_points);
std::cout <&l