如何在两者之间获得较小的分段线性曲线?

时间:2013-10-18 16:10:42

标签: algorithm piecewise

我有两个分段线性曲线c1& c2,我想要一个新的分段线性曲线c3是c1和c2的较小部分。

是否有一个简洁的算法来获取c3?

他们的观点是:

C1          C2          C3  
0   1       0   1.5     0   1
1   1       2   1.5     1   1
2   2       3.5 3       1.5 1.5
3   2       4   3       2   1.5
3   3       4   3.5     2.5 2
4   3       5   3.5     3   2
4   4                   3   2.5
5   4                   3.5 3
                        4   3
                        4   3.5
                        5   3.5

enter image description here

1 个答案:

答案 0 :(得分:0)

我建议采用以下方法来确定曲线。该曲线将形成区域的边界,否则该区域受到x = [0,5]的限制并且向负Y值开放。我假设输入中没有循环或向后的曲线。

以下步骤:

  1. 规范化两条曲线的大小:它们都应具有相同数量的段,这些段使用相同的上下X位置,这是通过插入和插入其他点来实现的。使用相同数量的点和相同的X位置不起作用,因为在同一X位置有时会有多个点。这可能意味着一个标准化曲线的一段由两个相等的点定义,但这对于例如位置x = 3,这使整体思考和调试更容易。
  2. 确定交点:每当Y位置(C1或C2是否在下方)的顺序在一个段内发生变化时,两条线之间必定存在交点。确定此点并使用两个段替换每条曲线中的线段。第二次运行此步骤不应插入额外的点并在C1和C2中产生相同数量的点。
  3. 通过从每个点索引中选择具有最低Y位置的点来形成第三条曲线。在这里,你回过头来思考单点,而不是段,这就是上面的准备所必需的。