我在3D空间中有一组10个点。我所拥有的唯一信息是从每个点到每个点的距离。
我可以任意地将一个点设置为(0,0,0),将另一个点设置为我的X轴(距离,0,0)。
现在,似乎我应该能够使用这两个已知点来定位3D空间中的所有其他点(相对于前两个点)。
我有足够的信息来做这件事吗?是否有我应该查看的现有算法?
发布于 2019-10-11 02:39:32
对于前三点,我可以:
//store first one as zero point
if (pos.id == 0)
{
pos.position = Eigen::Vector3d(0, 0, 0);
}
//store second as X axis
if (pos.id == 1)
{
pos.position = Eigen::Vector3d(<Distance from 1 to 2>, 0, 0);
}
//triangulate third from distances
if (pos.id == 2)
{
double c = //distance from 3 to 1
double b = //distance from 3 to 2
double a = //distance from 1 to 2
pos.position.x() = (c*c - b * b + a * a) / (2 * a);
pos.position.y() = std::sqrt(c*c - pos.position.x()*pos.position.x());
}here中第三个点的代码
现在,我可以使用三个已知的点为以下几点运行多边化,如注释中所建议的。
https://stackoverflow.com/questions/58327564
复制相似问题