【发布时间】:2014-09-10 03:01:03
【问题描述】:
我有一个类,其中存储了三个任意的float 值。我们称它们为 A B 和 C。该类有一个方法,该方法将输入 -1 到 +1 范围内的浮点数,然后根据输入返回一个值。
用值-1调用方法将产生A的值,用0调用它会产生B,用1调用它会产生C。现在的问题是,我怎样才能为所有东西插入一个输出之间?
我正在考虑基于定义为 -1xA 0xB 和 1xC 的三个点的假想曲线/样条曲线。使用可以绘制此曲线的函数,可以计算范围内任何浮点数的输出。
注意:
- 曲线的确切形式并不那么重要,但它绝不能提供高于 AB 或 C 的输出,也不能提供低于 A、B 或 C 的输出。因为我需要测试一下看看哪种效果最好,我不能说曲线是否必须平滑。
- 对于存储的浮点值哪个更高或更低没有限制。其中两个甚至可能是相同的。
- 起初我想用三个点来定义一个圆,但是这可能会导致输出值超出 A B 和 C 的范围
通常我会在这里发布一些代码来说明我到目前为止所拥有的内容,但由于我真的不知道如何解决这个问题,所以我认为只发布一个空函数定义没有任何意义。
PS:
如果有人好奇为什么,我使用来自控制器的输入来定义关节的角度,所以输出值永远不会超出 -180 到 +180 的范围
【问题讨论】:
-
如果插值曲线的形式不重要,可以只用三个点创建一个分段线性函数吗?
-
只是澄清一下,A B 和 C 是一维点正确吗?
-
@Ben 我在想,是的,但是如上所述,我不确定最终哪种方法效果最好,所以我也希望有一种方法能够获得一些平滑的结果。另外,由于 A
-
嗯,如果点是一维的,那么线性方法是否“平滑”?
-
看来这三个“点”是二维的:第一个在(-1,A),第二个在(0,B),第三个在(1, C)。
标签: java algorithm interpolation