2014-06-05 4 views
3

CGAL에서 사용되는 부동 소수점 비트 너비를 선택할 수있는 방법이 있는지 궁금합니다. 나는 점의 좌표가 32 또는 64 비트 부동 소수점 숫자에 저장되어있는 것을 선택할 수 없습니다, 그러나CGAL의 부동 소수점 정밀 선택

#include <CGAL/Exact_predicates_inexact_constructions_kernel.h> 
#include <CGAL/convex_hull_2.h> 
#include <vector> 
typedef CGAL::Exact_predicates_inexact_constructions_kernel K; 
typedef K::Point_2 Point_2; 
typedef std::vector<Point_2> Points; 
int main() 
{ 
    Points points, result; 
    points.push_back(Point_2(0,0)); 
    points.push_back(Point_2(10,0)); 
    points.push_back(Point_2(10,10)); 
    points.push_back(Point_2(6,5)); 
    points.push_back(Point_2(4,1)); 
    CGAL::convex_hull_2(points.begin(), points.end(), std::back_inserter(result)); 
    std::cout << result.size() << " points on the convex hull" << std::endl; 
    return 0; 
} 

: 예를 들어

, 다음 코드는 직접 CGAL 설명서에서 복사 단지 볼록 선체 예이다 . 또한 convex hull이 32 또는 64 비트 산술로 계산되도록 선택하고 싶습니다. (그렇습니다. 높은 반올림 오류가 발생할 위험이 있습니다.)

런타임이나 컴파일 타임에 부동 소수점 정밀도를 선택해야합니까?

+2

에 자신의 정확한 조건 부정확 한 구조물하지만 저장 번호를 생성하는 데 적용 할 수 있습니다'Filtered_kernel >'. 'Simple_cartesian '는 질문에 대한 직접적인 대답이지만, 무시해서는 안됩니다. 걱정할 필요가있는 반올림 오류가 아니며, 알고리즘이 충돌하거나 무한 루프 할 수 있습니다. –

답변

2

당신은 파일 Exact_predicates_inexact_constructions_kernel.h 을보고 당신은 시도 할 수 플로트