【问题标题】:Curving from one point to another从一个点弯曲到另一个点
【发布时间】:2010-12-23 18:34:49
【问题描述】:

我有随机点的图块,它们在 x',y' 处结束(制作一个漂亮的二维数组):

Xt = (((X′-X)/T)*t)+X ,
Yt = (((Y′-Y)/T)*t)+Y

这很好用,但它是线性的。我正在寻找更曲线的东西。有点像抛物线的作品。基本上,我不是在一条直线上到达 X',而是在寻找一种算法,它会弯曲并最终到达 X',并且曲率的大小基于一个变量。

谢谢

*编辑 我认为贝塞尔曲线看起来是我想要的,但我不确定如何实现它。有人可以解释一下二次贝塞尔公式。我也不确定类似“E”的符号是做什么的。我认为它与一个范围有关,但我不确定,谢谢

【问题讨论】:

  • 我弄清楚了 E 的含义,并且能够自己实现它:Nx = (1 - i) ^ 2 * x + 2 * (1 - i) * i * 200 + (i ^ 2) * xP Ny = (1 - i) ^ 2 * y + 2 * (1 - i) * i * 900 + (i ^ 2) * yP 谢谢大家

标签: c++ algorithm path


【解决方案1】:

查看this page about Perlin Noise,尤其是“插值”部分。一般的想法是,您可以应用一些东西来产生更平滑的曲线,而不是t 中的t 上的线性传递函数。 “最平滑”的噪声是 cos(t) 函数,但三次或五次多项式可用于逼近余弦。

【讨论】:

    【解决方案2】:

    您正在寻找Bezier Curves,或其他类似的参数曲线。这些以编程方式非常容易编码,并且具有直观直接操作的优点。我所知道的最好的论文在经典书籍Mathematical Elements of Computer Graphics 中,但任何计算机图形学教科书都可能包含基本介绍。

    【讨论】:

    • 您可以添加更简单的插值,即拉格朗日和牛顿插值。
    【解决方案3】:

    您正在寻找的是Catmul-Rom spline,它是一种通过控制点的 Hermite 样条。贝塞尔曲线不是要走的路,在这种情况下很难控制。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-25
      • 2021-10-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多