Yur*_*uri 13 algorithm math geometry
鉴于:
我想要的是:
我的方法:
可能的问题:

我的问题:
到目前为止我的修复:
我对这个修复不太满意,因为我觉得我错过了一个更优雅的解决方案,我的修复感觉相当"hacky".效率是关键,因为它用于实时嵌入式系统.
现有的代码库是用C++编写的,所以如果你想用特定的语言编写,C++就有我的偏好.谢谢!
[编辑] 我改变了我的修复,从垂直点到平行点,因为我认为跟随线段比计算向外法线更容易.
这个话题已经不活跃太久了,我相信它已经死了。不过我有一个解决方案。
\n\n\n\n\n但是,如果第一个段被选为最近的段,则左侧测试将产生右侧,否则左侧测试将产生右侧。
\n
你使用了稍微含糊的语言。我将使用线段来表示折线中的线段,使用象限来表示由它们界定的区域。因此,在您的情况下,您将有一个红色象限,它似乎位于一个段的右侧,而另一个段的左侧。
\n\n如果左侧测试对不同的段产生不同的答案,您应该对段本身重新进行测试。就您而言,您将拥有:
\n\n两个部分对于象限所在的位置存在分歧,因此您需要进行两个进一步的消歧测试:
\n\n这使我们可以得出结论,第二段位于第一段和象限 \xe2\x80\x94 之间,因为这两个段中的每一个都位于第二段的不同侧。因此,第二段比第一段“更接近”象限,并且它对左右测试的答案应被用作正确的答案。
\n\n(我几乎确定您只能使用两个消歧测试之一,为了清楚起见,我将两者都放入了)
\n\n为了完整起见:我相信这个解决方案也满足了您对效率和优雅的需求,因为它使用了您从一开始就使用的相同方法(测试的左侧),因此它满足指定的所有条件:它很优雅,很高效,并且可以解决问题。
\n