// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
-// This file was modified by Oracle on 2013, 2014, 2017, 2018.
-// Modifications copyright (c) 2013-2018 Oracle and/or its affiliates.
+// This file was modified by Oracle on 2013-2020.
+// Modifications copyright (c) 2013-2020 Oracle and/or its affiliates.
// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
class linear_intersections
{
public:
- template <typename Point1, typename Point2, typename IntersectionResult, typename EqPPStrategy>
+ template
+ <
+ typename Point1, typename Point2, typename IntersectionResult,
+ typename Strategy
+ >
linear_intersections(Point1 const& pi,
Point2 const& qi,
IntersectionResult const& result,
bool is_p_last, bool is_q_last,
- EqPPStrategy const& strategy)
+ Strategy const& strategy)
{
int arrival_a = result.direction.arrival[0];
int arrival_b = result.direction.arrival[1];
typename TurnInfo,
typename IntersectionInfo,
typename OutputIterator,
- typename EqPPStrategy
+ typename Strategy
>
static inline bool apply(UniqueSubRange1 const& range_p,
UniqueSubRange2 const& range_q,
IntersectionInfo const& inters,
method_type /*method*/,
OutputIterator out,
- EqPPStrategy const& strategy)
+ Strategy const& strategy)
{
std::size_t ip_count = inters.i_info().count;
// no intersection points
{
boost::ignore_unused(ip_index, tp_model);
- typename IntersectionInfo::side_strategy_type const& sides
- = inters.get_side_strategy();
+ auto const strategy = inters.strategy();
if ( !first2 && !last2 )
{
// may this give false positives for INTs?
typename IntersectionResult::point_type const&
inters_pt = inters.i_info().intersections[ip_index];
- BOOST_GEOMETRY_ASSERT(ip_i2 == equals::equals_point_point(i2, inters_pt));
- BOOST_GEOMETRY_ASSERT(ip_j2 == equals::equals_point_point(j2, inters_pt));
+ BOOST_GEOMETRY_ASSERT(ip_i2 == equals::equals_point_point(i2, inters_pt, strategy));
+ BOOST_GEOMETRY_ASSERT(ip_j2 == equals::equals_point_point(j2, inters_pt, strategy));
#endif
if ( ip_i2 )
{
}
else if ( ip_j2 )
{
+ auto const sides = strategy.side();
int const side_pj_q2 = sides.apply(range2.at(1), range2.at(2), range1.at(1));
int const side_pj_q1 = sides.apply(range2.at(0), range2.at(1), range1.at(1));
int const side_qk_q1 = sides.apply(range2.at(0), range2.at(1), range2.at(2));
// may this give false positives for INTs?
typename IntersectionResult::point_type const&
inters_pt = inters.i_info().intersections[ip_index];
- BOOST_GEOMETRY_ASSERT(ip_i2 == equals::equals_point_point(i2, inters_pt));
- BOOST_GEOMETRY_ASSERT(ip_j2 == equals::equals_point_point(j2, inters_pt));
+ BOOST_GEOMETRY_ASSERT(ip_i2 == equals::equals_point_point(i2, inters_pt, strategy));
+ BOOST_GEOMETRY_ASSERT(ip_j2 == equals::equals_point_point(j2, inters_pt, strategy));
#endif
if ( ip_i2 )
{
}
else if ( ip_j2 )
{
+ auto const sides = strategy.side();
int const side_pi_q2 = sides.apply(range2.at(1), range2.at(2), range1.at(0));
int const side_pi_q1 = sides.apply(range2.at(0), range2.at(1), range1.at(0));
int const side_qk_q1 = sides.apply(range2.at(0), range2.at(1), range2.at(2));