你所尝试的是三边定位。在继续之前最好先做些研究,因为它很难正确地完成。不过我会从以下开始。只要你有实际的三维距离,以下步骤应该能够奏效。如果没有,可能会出现问题。1. 取一个点p1,并将其指定为原点(0,0,0)。 2. 取另一个点p2,并将其放置在(distance(p1,p2),0,0)处。 3. 取另一个点p3,并根据其与p1和p2的距离,在(x,y,0)平面上放置它。 4. 取另一个点p4,并根据其与p1、p2、p3的距离,在三维空间中放置它。 5. 重复第4步,直到没有剩余点。前三个步骤足以确定坐标系。通过利用由点的中心轻松形成的平面三角形来解决第3和第4步。
假设这些点处于一般位置,即没有3个点在同一条直线上,也没有4个点在同一个平面上。这并不是限制条件,只是为了使算法更简单,不需要检查特殊情况。如果四个球体(处于一般位置)相交,则相交点为单个点。这可以通过看到两个球的交点是一个圆,三个球的交点是2个点,并且如果第四个球的中心不在与其他三个球的中心共面的平面上,则该球只能通过一个交点来进行传递。因此,如果距离有效,则可以通过逐步添加点来创建形状。前4个点的位置定义方向。例如,将第一个点设置为原点,将第二个点设置为到第一个点给定距离的+X,将第三个点设置为在XY平面中+Y方向的圆的交点上,将第四个点设置为在+Z方向的3个球的交点上。可以通过具有以前4个点为中心并由距离给出的半径的4个球的交点来定位其他点。