Subject: CGAL users discussion list
List archive
Re: [cgal-discuss] Intersection points between General_polygon_set_2<Gps_circle_segment_traits_2<Exact_predicates_exact_constructions_kernel>> ::X_monotone_curve_2 (Solved)
Chronological Thread
- From: Nicklas SB Karlsson <>
- To:
- Subject: Re: [cgal-discuss] Intersection points between General_polygon_set_2<Gps_circle_segment_traits_2<Exact_predicates_exact_constructions_kernel>> ::X_monotone_curve_2 (Solved)
- Date: Wed, 24 Jan 2024 21:20:58 +0100
- Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None ; spf=Pass ; spf=Pass
- Ironport-data: A9a23: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
- Ironport-hdrordr: A9a23:xWWzR631/mzlYt7HM6u/cQqjBI8kLtp133Aq2lEZdPUzSL3+qy nOpoV46faQslwssR4b+OxoVJPufZqYz/5ICOoqTNOftWvd1VdARbsKheDfKn/bak7DH4VmuZ uIHZIRNDS9Nykese/KpCeePpIbyMODmZrY49vj8w==
- Ironport-phdr: A9a23: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 dOzFUz4NHKOimuxPy0=
- Ironport-sdr: 65b1712c_Ijq5YajQ+0flWqRmzD1MZ5bpyHehd3yFR2WE4L9dMLuGK/N Pp+6xnncWG/SkvY3ueOcZu9ztzkPxIIVZSXTKYQ==
Solved using:
typedef CGAL::Exact_predicates_exact_constructions_kernel Kernel;
typedef CGAL::Gps_circle_segment_traits_2<Kernel> Traits_2;
typedef Traits_2::Point_2 Traits_2_Point_2;
typedef std::pair<Traits_2_Point_2, unsigned int> pair_type;
typedef boost::variant<pair_type, X_monotone_curve_2> variant_type;
const X_monotone_curve_2 stockSegment = input; // from polygon boundary
std::list<variant_type> pts;
intersector(segment, stockSegment, std::back_inserter(pts));
for(auto itD : pts)
{
const variant_type variant = itD;
if(variant.type() == typeid(pair_type))
{
const pair_type paret = boost::get<pair_type>(variant);
Traits_2_Point_2 point = paret.first;
intersections.push_back(point);
}
//const X_monotone_curve_2 x = boost::get<X_monotone_curve_2>(variant);
}
I am able to calculate intersection between X_monotone_curve_2_from general
polygon boundary. Or more exact intersection
points between general polygon boundaries.
Performance I am however not very happy wiht, one thousand iterations almost
80 seconds. Might be because data is stored
in std::list and plenty of dynamic memory allocation is needed for each
iteration and also because number of
X_monotone_curve_2 grow linearly with number of iterations which I have to do
something about in my implementation.
Nicklas Karlsson
sön 2024-01-21 klockan 17:06 +0100 skrev Nicklas SB Karlsson:
> Try to calculate intersection points between polygon outer boundaries. Are
> able to iterate thru the curves and get
> them
> as X_monotone_Cruve_2 or more exact:
> typedef CGAL::Exact_predicates_exact_constructions_kernel Kernel;
> typedef CGAL::Gps_circle_segment_traits_2<Kernel> Traits_2;
> typedef Traits_2::X_monotone_curve_2
> X_monotone_curve_2;
>
> Are also able to create an intersector with:
> CGAL::Arr_circle_segment_traits_2<Kernel> t2;
> auto intersector = t2.intersect_2_object();
>
> Then trying to use the intersector with:
> std::list<Apoint_2> pts
> CGAL::intersection(intsegments.begin(), intsegments.end(),
> std::back_inserter(pts));
> I however get a compiler error about the iterator. Tried diferent types for
> the point:
> typedef Kernel::Point_2 K_Point_2;
> typedef Traits_2::Point_2 Apoint_2;
> typedef Polygon_2::Point_2 P_Point_2;
> But all without success. Anybody have a clue what might be wrong?
>
> Nicklas Karlsson
>
>
- [cgal-discuss] Intersection points between General_polygon_set_2<Gps_circle_segment_traits_2<Exact_predicates_exact_constructions_kernel>> ::X_monotone_curve_2, Nicklas SB Karlsson, 01/21/2024
- Re: [cgal-discuss] Intersection points between General_polygon_set_2<Gps_circle_segment_traits_2<Exact_predicates_exact_constructions_kernel>> ::X_monotone_curve_2 (Solved), Nicklas SB Karlsson, 01/24/2024
Archive powered by MHonArc 2.6.19+.