【问题标题】:Increment integer between two numbers to create the smoothest line在两个数字之间增加整数以创建最平滑的线
【发布时间】:2020-01-19 02:57:52
【问题描述】:

我想制作一个公式/函数/算法来计算两组数字之间的最平滑线。

Set1: (214,224,238)  
Set2: (180,207,226)

将以上两个集合视为对。

214-180  
224-207  
238-226

我相信第一步是让每组对之间的差异最小。在这种情况下,它是 12,因为 238 - 226 = 12。然后我们可以为其他两对增加 12 倍。

214-180 = 34.  
34/12 = 2.83333333   
214 - (2.83333 * 12) = 180

如果问题允许我们使用小数,那就很简单了。问题是我们不能有小数。每个值必须是整数。因此在本例中,10 次迭代将减少 3 次,2 次迭代将减少 2 次。

至于平滑度,2 - 2 次迭代应该在 3 次迭代之间等间隔是有意义的。因此模式将是

3, 3, 3, 2, 3, 3, 3, 3, 2, 3, 3, 3. 
211, 208, 205, 203, 200, 197, 194, 192, 189, 186, 183, 180

希望我已经彻底解释过了。感谢您的建议。

【问题讨论】:

  • 为什么不直接用浮点数计算然后取整呢?那么i-th 的值将是round(start + i/n * (end - start)),其中n 是总步数。
  • @NicoSchertler 好吧,我想你已经回答了。如果你想发布答案,我可以接受。

标签: math linear-programming


【解决方案1】:

Bresenham's algorithm 用于在整数网格上绘制线条。
算法在整个范围内分配步数。

也许它可能适合您的情况。

与您的方法不同:您使用的是最小的坐标差,而这个算法 - 最大的 - 达到声称的目的 - “最平滑的线”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-02
    • 2013-12-19
    • 2011-12-25
    • 2020-06-18
    • 2012-04-25
    相关资源
    最近更新 更多