【发布时间】:2018-07-18 13:42:13
【问题描述】:
我的应用程序通过让用户将相机对准地板角落,然后进行大量数学运算,最终得到一个多边形来捕捉房间的形状。
假设墙壁是直的(不是弯曲的)。大多数角落是由相互垂直的墙壁形成的,但在某些情况下可能不是。
根据用户指向相机的准确度,我为角导出的 (x,y) 坐标可能超出实际角,或者在实际相机前面,或者不太可能在左侧或右侧.显然,在这种情况下,当我连接点时,我会得到奇怪的平行四边形或菱形形状。见例子。
我正在寻找一种程序或算法来规范化或正则化这些形状,前提是我们知道哪些角应该是直角。
我最初的尝试涉及找到角度彼此“接近”的线段,将它们全部调整到相同的角度,然后重新计算顶点。然而,这个算法被证明是不稳定的。
我目前的想法是找到最钝的角度(由于一个点被错误地放置在实际拐角之外),或者最尖锐的角度(由于一个点被错误地放置在实际拐角的前面) ,并找到使其成为直角的角点。然而,问题在于,这样的调整可能会对其他角产生副作用,例如使它们离直角更远。我觉得我需要某种算法来获取所有信息并立即优化/解决它——这是一种线性规划问题吗?——但我被卡住了。
【问题讨论】:
-
"假设墙壁是直的(不是弯曲的)。 " 可能,但你永远不知道。 “大部分角落是由相互垂直的墙壁形成的”不太可能。客房建设不是火箭科学。
-
@Ripi2 感谢您的评论,但我并没有对建筑的本质做出笼统的陈述。我正在为解决这个特殊问题设定条件。换句话说,至少就目前而言,任何解决方案都可以处理直墙和直角的角。