저는 벽에 머리를 두드려서 CGAL의 원형 커널을 사용하여 선분 (Line_Arc_2)과 선분 서클 (Circle_2). 안타깝게도 Circular Kernel의 예제 코드에는 그다지 많은 부분이 없기 때문에 참고 매뉴얼이 도움이되지 않습니다. 여기CGAL을 사용하여 선분과 원의 교점을 계산하는 방법
내가 일 것이라고 생각 코드,하지만 지금 심지어 (최신 시스템 컴파일러를 사용하여 맥 OS 10.9)를 컴파일되지 않습니다 : 나는 result_of 라인에 오류가
#include <vector>
#include <iterator>
#include <CGAL/Exact_circular_kernel_2.h>
#include <CGAL/Circular_kernel_intersections.h>
#include <CGAL/intersections.h>
#include <CGAL/result_of.h>
#include <CGAL/iterator.h>
#include <CGAL/point_generators_2.h>
#include <boost/bind.hpp>
typedef CGAL::Exact_circular_kernel_2 CircK;
typedef CGAL::Point_2<CircK> Pt2;
typedef CGAL::Circle_2<CircK> Circ2;
typedef CGAL::Line_arc_2<CircK> LineArc2;
typedef CGAL::cpp11::result_of<CircK::Intersect_2(Circ2,LineArc2)>::type Res;
int main(){
int n = 0;
Circ2 c = Circ2(Pt2(1,0), Pt2(0,1), Pt2(-1, 0));
LineArc2 l = LineArc2(Pt2(0,-2), Pt2(0,2));
std::vector<Res> result;
CGAL::intersection(c, l, std::back_inserter(result));
return 0;
}
을 " 오류 : 형식에 'result_type'이 (가) '...'표시되지 않고 교차 선에 '실행 가능 오버로드 됨'= ''이 가능하다는 두 번째 오류가 발생했습니다.
또한 이것이 일단 작동하면 다음 질문 일 가능성이 높습니다. 실제로 벡터에 삽입 된 교차점에 어떻게 도달합니까? CGAL의 문서는 나에게 "결과"가 Circular_arc_point_2와 다중성을 나타내는 부호없는 int의 쌍을 포함해야한다고 제안합니다. 이 경우 내가 실제로 얻을 수있는 것입니까? 더 일반적으로, Circular Kernel과 Spherical Kernel 교차 루틴을 사용하는 좋은 지침서를 아는 사람이 있습니까?
감사합니다.
, 감사합니다. 문서를 업데이트하는 것이 가장 도움이 될 것입니다! – Sam