gpt4 book ai didi

java - 从三点定义曲线

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:23:35 26 4
gpt4 key购买 nike

我有一个类,其中存储了三个任意 float 值。我们称它们为 A B 和 C。该类有一个方法,该方法将采用 -1 到 +1 范围内的输入 float ,然后根据输入返回一个值。

用值 -1 调用方法将得到 A 的值,用 0 调用它会得到 B,用 1 调用它会得到 C。现在的问题是,我如何为之间?

我正在考虑基于定义为 -1xA 0xB 和 1xC 的三个点的假想曲线/样条曲线。使用可以绘制此曲线的函数,可以计算范围内任何 float 的输出。

注意:

  • 曲线的确切形式并不那么重要,但它绝不能提供高于 A B 或 C 的最高值的输出,也不能提供低于 A、B 或 C 的输出。因为我需要对其进行测试,看看哪种效果最好,我不能说曲线是否一定要平滑。
  • 对于哪个存储的浮点值更高或更低没有限制。其中两个甚至可能是相同的。
  • 起初我想用这三个点来定义一个圆,但是这可能会导致输出值超出 A B 和 C 的范围

通常我会在这里发布一些代码来说明我到目前为止的内容,但由于我真的不知道如何解决这个问题,所以我认为只发布一个空函数定义没有任何意义。

附言:

如果有人好奇为什么,我使用来自 Controller 的输入来定义关节的角度,所以输出值永远不会超出 -180 到 +180 的范围

最佳答案

最简单的答案是 other answer 中的分段线性函数.

但是,评论说“任何一种不会导致尖尖的山顶或狭窄的坑的平滑曲线”。

第二个最简单的答案是使用通过 3 个点的唯一抛物线(二次插值),但这违反了所有值必须介于 min(A,B,C) 之间的要求和 max(A,B,C)

所以我们坚持第 3 个最简单的答案:使用在 0 处导数为 0 的分段二次函数:

f(x) = B + (C-B) * x^2  when x is in [0,1]
B + (A-B) * x^2 when x is in [-1,0]

关于java - 从三点定义曲线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24834050/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com