我有一个构成曲线的值表,我想在(Java或C)中使用一个算法来给出每个区间的值
我需要的结果=>
Groupe 1 => (0,0)(1,1)(2,2)
Groupe 2 => (2,2)(3,2)(4,2)
Groupe 3 => (4,2)(5,1.25)(6,0.5)
Groupe 4 => (6,0.5)(7,0.5)(8,0.5)(9,0.5)
Groupe 4 => (9,0.5)(10,1.5)(11,1.5)(12,1.5)
有什么方法能给我带给你的结果?
答案 0 :(得分:1)
您需要的是插值算法。有许多具有不同的属性,很难说哪一个适合你。
基本上所有这些都取得了你所拥有的积分,并能够在两者之间建议合理的价值。
最简单的是线性插值。给定x,y1和x2之间的点x,y,你有y = (x-x1)/(x2-x1) * y1 + (x2-x)/(x2-x1) * y2
,所以如果你选择一个x,你就可以找出y。这将为您提供直线段。
如果这对您的应用来说太简单,请查看一些曲线函数。 Bezier在许多情况下都是首选,因为它很快并且曲线取决于有限数量的相邻点。请参阅wikipedia。
那就是说,记住所有这些都是近似值,并且有很多假设,因此不太可能有一个完全匹配基本事实。