objective-c - 在钟形曲线上分配数字

标签 objective-c algorithm math

我正在寻找一个产生类似于钟形曲线的数学函数(想想)。我在这里非常不知所措。我认为高斯函数可能是我所需要的,但我不知道如何正确地应用它以达到我的目的。

我将使用该函数为一系列对象设置动画:

enter image description here

我想模拟这个动画加速和减速的外观,方法是将每个对象偏移到更靠近前一个对象,直到中间点,之后偏移增加回到原始值:

enter image description here

一旦实现,我希望函数接受我在 x 轴上的起点和终点,以及需要容纳的对象数量。然后它应该返回一系列值,这些值将成为每个对象的 x 原点。

例如:

开始:0 结束:100 对象:20

平坦分布:0、5、10、15、20、25、30、35、40、45、50、55、60、65、70、75、80、85、90、95

所需结果:0、10、19、27、34、40、44、45、46、47、48、49、50、51、55、60、66、73、81、90

对曲线轮廓的一些控制也会很好 - 例如,我上面的估计值是一个非常“平坦”的钟形(项目 7-14 具有相同的偏移量)。

最佳答案

考虑以下三次多项式:

f(x,a) = 4ax^3 - 6ax^2 + 2ax + x

在域 x in [0:1] 上计算,a 保持不变并从区间“[0:1]”中选择。

这将生成从零开始到一结束的图。如果 a==0,你会得到一条直线。如果 a==1,你会得到一条很深的曲线。对于介于两者之间的 a,您会得到一些介于两者之间的东西。

一旦您为 a 选择了一个合适的值,您只需在 0 和 1 之间的任意多个点上进行评估。然后您缩放这些值以适应您想要的范围。


这张电子表格的截图给出了两个例子。 A 列和 F 列包含值 a,B 列和 G 列包含 x 的值(如果您想使用平面分布中的确切值,您可以更改每个用法xx/100)。 C 和 H 列保存 f(x,a) 的结果。 D 列和 I 列包含 f(x,a)*100

Spreadsheet screenshot

关于objective-c - 在钟形曲线上分配数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13091249/

相关文章:

javascript - 反转二进制网络

javascript - 玩家沿对 Angular 线移动 - 太快了 || Node JS

ios - viewWithTag:reloadData 后返回 nil

ios - UITabBarController 中的奇怪界面错误 UIScrollView。别人能复制吗?

ios - 在每次翻页 UIPageViewController 后调用方法调用

c++ - 在哪里可以找到开源二维装箱算法?

javascript - 查找悬挂结构中一组盒子的重心

ios - 使用 mediaplayercontroller 播放视频

algorithm - 动态规划优化,凸包

c++ - 如何使用拓扑排序结果来解决依赖关系生成最终目标代码?