如何绘制近似于原始曲线的曲线

时间:2011-05-08 14:34:34

标签: c++ opengl 3d

我有一组点,我想绘制一条应该近似于原始曲线的曲线 比方说,在鹰眼系统(用于板球)中,我在球的整个飞行过程中都有一套球的坐标,现在我怎样才能画出这样一条穿过球的空间坐标并且看起来与原始曲线不同的曲线
一种方法,我认为它得到了大量的点,使每两个点
是非常接近,然后在它们之间画一个直的光

2 个答案:

答案 0 :(得分:5)

曲线几乎总是分四步呈现:

  1. 使用曲线或样条算法近似或插值一组点。选择可能包括:

    • Cubic splines,它通过所有数据点并生成平滑曲线
    • Bézier curves,它不会通过所有点,而是位于每个曲线段周围4个点的连续组的包络内。
    • Hermite curves,由一组点和一组切向量定义:您需要以某种方式生成切线向量集,以便使用这种曲线。
    • (可能还有我忘记的更多)
  2. 转换您选择的任何一种表示形式为Bézier Curve:这可以通过其他曲线类型的简单矩阵变换来实现。

  3. Repeatedly subdivideBézier曲线:控制点倾向于接近曲线。

  4. 绘制细分曲线的控制点,用直线连接。

  5. 如果你直接选择Bézier曲线,这可能是最简单的,那么有一些非常simple and elegant methods of subdividing it

答案 1 :(得分:2)

我强烈建议使用Catmull-Rom样条,它们基于Hermite曲线。它不是使用2个点和2个切线,而是使用四个相邻的数据点进行插值,使其更适合/更简单的运动路径上采样。