【问题标题】:"Merging" a straight line into a Gaussian curve将直线“合并”成高斯曲线
【发布时间】:2012-03-05 13:02:33
【问题描述】:

您可以假设下面的第一张图片是原始高斯曲线。第二个图像是所需的输出。我有这些方程式:

  • 每个红线段的方程(我们称之为分段函数f(x)
  • 高斯曲线方程 (g(x))

我正在尝试制作一个可以改变高斯曲线以匹配第二张图像中的曲线的方程。我已经尝试绘制 (f(x) + g(x)) / 2 (最后一张图片),但它没有成功。我还尝试使用最右侧的红线段作为绘制曲线右侧的独立轴,但这会导致巨大的不连续性。有没有人有其他想法?

编辑:第三张图片显示了当我尝试线性插值时会发生什么。

【问题讨论】:

  • 你希望导数是连续的(如果是,有多少)?
  • 我只需要定义导数并且曲线是连续的。

标签: actionscript-3 apache-flex math geometry calculus


【解决方案1】:

尝试使用 B 样条曲线逼近您的高斯曲线,例如,它已完成 here。由于如何将点添加到 B 样条(这是贝塞尔曲线的概括)更清楚,您应该能够得到您想要的结果。

【讨论】:

  • 我试图避免使用贝塞尔曲线进行逼近,但由于我还没有找到任何其他解决方案并且我有一个截止日期,我想我会去的。谢谢!
【解决方案2】:

我不知道这方面的数学问题,但至于你问题的最后一部分(使用红色轴绘制曲线的右侧部分),我认为你可以平滑曲线和轴与一个相当简单的过程:

plotPosition = curvePosition * (1 - t) + otherPosition * t;

“t”是一个介于 0-1 之间的数字(当 t=0 时 plotPosition 等于 curvePosition,当 t=1 时 plotPosition 等于 otherPosition),这样您就可以确定何时以及如何进行过渡。您可以使用一些方程来进一步平滑它,以确定随时间变化的过渡值(缓动)。

【讨论】:

  • 线性插值导致 f(x) 的梯度变化的角落。如果您将 t 设置为 0.5,则此概念将转换为我已经尝试过的 (f(x) + g(x)) / 2。不过谢谢你的回答。
  • 这个想法是沿着曲线的路径逐步改变t......所以说你在整个曲线期间有t = 0,但是当对角轴开始时,你慢慢开始增加t,直到你在曲线的末端以 1 结束(您可以使用一些缓动方程来控制过渡的“形状”)。我知道这不是一个有效的数学答案,但它可以帮助你想出一个;)
猜你喜欢
  • 2021-10-14
  • 2018-12-10
  • 1970-01-01
  • 2012-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-23
  • 1970-01-01
相关资源
最近更新 更多