最佳答案
这只是一个想法,还没有经过验证的方法。
首先,找到平面。随机选取3个点,找到一个通过它们的平面,将4个参数归一化。重复 1000 次左右。你最终会得到 1000 个 4 元组的数字。使用 clustering analysis 之一找到 2 或 3 组非常接近的 4 元组的方法。平均每个组。这些大约是盒子侧面的平面。
现在让它们更精确。对于每个平面,找到所有靠近它但不靠近其他平面的点(对于“接近”的某些值,也许也可以使用聚类方法找到)。对于每个这样的点组,使用 least squares 找到一个最适合的平面.
如果你有三架飞机,那很好;与它们相交,你有一个顶点和三个边。对于两架飞机,你只有一个边缘。无论哪种方式,您现在都可以尝试找到其他边缘。为简单起见,将您的平面视为 XY 平面,将已知边视为 X 轴。你现在需要找到最左边(最右边)的垂直线,这样大部分点都在它的左边(resp. right)。将所有点投影到 X 轴。你现在有一个原始问题的一维情况:在某个区间上有很多随机点,找到区间。再次使用聚类方法。
关于c++ - 在 3D 坐标系中查找矩形中的角度点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15277999/