【问题标题】:Draw curve -> Get equation绘制曲线 -> 获取方程
【发布时间】:2022-01-06 22:37:37
【问题描述】:

我正在进行的项目的一部分需要用户绘制曲线的界面,我想输出该曲线的近似数学方程以对其执行各种测试。

到目前为止,我已经想到了 2 种方法,并且想知道它们是否可行,或者是否存在更好的方法来解决我遗漏的问题/很酷的数学技巧可以让我解决这个问题。

方法一:

与其让用户绘制曲线,不如让他们选择插入贝塞尔曲线点并调整它们以制作曲线。由于贝塞尔曲线有一个描述它们的参数方程,我可以直接得到精确的方程。

缺点: - 用户调整和制作贝塞尔曲线比简单地绘制曲线更麻烦

方法2:

绘制曲线并提取“n”个点。 (我认为这应该不难做到)。 不知何故,从这些“n”点到通过它们的曲线方程。自然 'n' 会很大,比如 100。 有没有一种巧妙的方法来获得通过“n”个点的“最简单连续函数”的方程?

【问题讨论】:

标签: javascript algorithm math computer-science


【解决方案1】:

方法 1 - 插入 Bezier 点和调整控制点 - 用于许多矢量绘图程序,尤其是 CAD 类型的应用程序,其中精度很重要并且点布置在网格上等。它速度较慢方式来绘制,但在这些情况下使用它,因为手绘曲线真的很难仔细

方法 2 - 只需绘制并获得平滑的近似值 - 在不需要精度时也很受欢迎。我不确定这通常使用什么方法,或者即使有一个“通常”,但我认为做得很好并不特别困难。我会:

  1. 按照绘制顺序将所有点与线段连接起来。
  2. 应用Ramer-Douglas-Peucker 算法来减少点数。
  3. cubic spline interpolation 对点进行插值。仔细查看这个 - 三次样条插值有多种风格,它们的名称重叠。我特别喜欢保留二阶导数连续性的版本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-11
    • 1970-01-01
    • 1970-01-01
    • 2012-01-31
    相关资源
    最近更新 更多