Я пытаюсь использовать библиотеку Clipper C ++ для реализации функции is_bordering
, как показано ниже.
bool is_bordering(Path p1, Path p2) {
Paths solutions;
Clipper c;
// execute intersection on paths
c.AddPath(p1, ptSubject, true);
c.AddPath(p2, ptClip, true);
c.Execute(ctIntersection, solutions, pftNonZero);
return (solutions.size() > 0); // the paths share edges
}
int main() {
Path p1, p2;
p1 << IntPoint(0,0) << IntPoint(1,0) << IntPoint(0,1) << IntPoint(0,0);
p2 << IntPoint(1,0) << IntPoint(1,1) << IntPoint(0,1) << IntPoint(1,0);
cout << is_bordering(p1, p2) << endl;
}
Я думал, что когда два граничных полигона были протестированы с ctIntersection
, результат будет содержат граничные края, но для меня это возвращает ложь. То, что я ожидаю от вышеупомянутого, будет следующим, с зеленым, представляющим solutions
Пути.
Как заставить эту функцию работать (с библиотекой Clipper)?