Java 三个球体的交点在ProGAL中给出了错误的坐标

Java 三个球体的交点在ProGAL中给出了错误的坐标,java,Java,我用它来找到三个球体的两个交点 这是我的密码: Point p0 = new Point(2,8,1); Point p1 = new Point(5,9,17); Point p2 = new Point(21,19,11); Point p3 = new Point(7,4,1); double r0 = p3.distance(p0); double r1 = p3.distance(p1); double r2 = p3.distance(p2); Sphere s0 = new Sph

我用它来找到三个球体的两个交点

这是我的密码:

Point p0 = new Point(2,8,1);
Point p1 = new Point(5,9,17);
Point p2 = new Point(21,19,11);
Point p3 = new Point(7,4,1);
double r0 = p3.distance(p0);
double r1 = p3.distance(p1);
double r2 = p3.distance(p2);
Sphere s0 = new Sphere(p0, r0);
Sphere s1 = new Sphere(p1, r1);
Sphere s2 = new Sphere(p2, r2);
Point[] intersections = Sphere.getIntersections(s0, s1, s2);
for(Point point : intersections)
    System.out.println(point.x() + " " + point.y() + " " + point.z());
这是输出:

8.748195083271948 1.1144249830330588 0.8525618604469422
-6.949424320444698 27.02495339639668 2.176457472808587
所有点都不接近实际点
(7,4,1)

是因为
i) 舍入误差?
ii)错误的算法?


iii)我做错了什么?

为什么要使用cgal标签?看起来progal并没有什么关系。@marglisse我想他们用progal来开发他们库的一部分。什么?不,CGAL不以任何方式使用ProGAL。我的意思是反之亦然。对不起,我弄错了。ProGAL使用CGAL,我的意思是。@OnurğağrıcıOh。。我们在ProGAL中不依赖于CGAL。我们使用JAMA进行SVD和特征分解,使用Java3D进行可视化,但除此之外,没有依赖关系。