【问题标题】:Computing Minkowski Difference For Circles and Convex Polygons计算圆和凸多边形的 Minkowski 差
【发布时间】:2013-11-19 00:14:39
【问题描述】:

我需要实现一个 Minkowski 和函数,该函数可以返回 2 个圆、2 个凸多边形或一个圆和一个凸多边形的 Minkowski 和。我发现this 线程解释了如何为凸多边形执行此操作,但我不确定如何为圆形和多边形执行此操作。另外,我怎么能代表答案?!我希望算法在 O(n) 时间内运行,但乞丐不能成为选择者。

【问题讨论】:

    标签: time-complexity computational-geometry


    【解决方案1】:

    圆很简单——只需添加中心点,然后添加半径。 Circle + ConvexPoly 几乎同样简单:将每个线段垂直向外移动圆半径,并用以原始多边形顶点为中心的圆弧连接相邻线段。通过圆心点平移整体。

    至于你如何表示答案:嗯,这取决于你想用它做什么。如果您只想使用矢量绘图库进行绘制,可以将其转换为 NURBS。如果您只想要多边形近似,则可以用折线近似圆弧。或者您可以按原样存储它——“这个多边形,以这样那样的半径扩展”。例如,这将是诸如光线投射之类的最佳选择。或者作为一种折衷方案,您可以线性连接相邻线段而不是圆弧,并将其存储为(新)凸多边形和顶点处的圆列表的并集。

    哦,关于 ConvexPoly + ConvexPoly。这是最棘手的一个,但仍然很简单。基本思想是获取每个多边形的线段向量列表(从某个特定的极值点开始,例如每个多边形上具有最低 X 坐标的点),然后将两个列表合并在一起,使其按角度排序。将您开始使用的两个点相加,然后应用合并向量列表中的每个向量来生成其他点。

    【讨论】:

      猜你喜欢
      • 2017-04-21
      • 2012-08-04
      • 1970-01-01
      • 2015-08-17
      • 2011-05-15
      • 2020-10-06
      • 1970-01-01
      • 2015-07-11
      • 1970-01-01
      相关资源
      最近更新 更多