В моей программе у меня есть
#include <CGAL/Simple_cartesian.h>
typedef CGAL::Simple_cartesian<double> K;
typedef K::FT FT;
typedef K::Ray_3 Ray;
typedef K::Line_3 Line;
typedef K::Point_3 Point;
typedef K::Segment_3 Segment;
typedef K::Triangle_3 Triangle;
typedef K::Plane_3 Plane;
#include <QMainWindow>
int main(int argc, char *argv[])
{
Point p0(0.103835, -0.0921626, -2.2133);
Point p1(0.165068, -0.0411001, -2.28194);
Point p2(0.0954547, -0.0170658, -2.23422);
Plane plane(p0, p1, p2);
std::cout << plane.has_on(p0) << std::endl;
std::cout << plane.has_on(p1) << std::endl;
std::cout << plane.has_on(p2) << std::endl;
}
Тогда вывод будет
0
1
1
, но правильный результат должен быть:
1
1
1
И если я измените Ядро K как
typedef CGAL::Simple_cartesian<float> K
Тогда результат будет правильным.
И если я изменю Ядро K как
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
Тогда выведите
0
0
0
Так в чем проблема? Есть ли ошибка?