【问题标题】:How to get a smaller piece-wise linear curve between two?如何在两者之间获得更小的分段线性曲线?
【发布时间】:2013-10-27 13:34:54
【问题描述】:

我有两条分段线性曲线 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

【问题讨论】:

  • 目前无法回答您的问题。看一下 C3 在 x=3 位置的两个点。只有其中一个应该是曲线的一部分,因为它比另一个“小”。您必须更准确地定义您的意思。
  • @UlrichEckhardt,除了在“minimum”这个词可能更合适的地方使用“smaller”之外,规范并没有模棱两可;只能选择某些点并且仍然遵循两条输入曲线中的一条或另一条
  • 嗨 Ulrich 和 jwpat7,我的问题没有精确定义,但图片显示了 c3 应该是什么:c1 或 c2 的最小部分。

标签: algorithm piecewise


【解决方案1】:

我建议采用以下方法来确定曲线。这条曲线将形成一个由 x=[0, 5] 限制的区域的边界,并向负 Y 值开放。我假设输入中没有循环或反向曲线。

以下步骤:

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

【讨论】:

  • Ulrich,非常感谢您的建议,我会尝试并让您知道结果!
猜你喜欢
  • 1970-01-01
  • 2017-08-18
  • 2023-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-28
  • 1970-01-01
相关资源
最近更新 更多