猿问

将 alpha 添加到 Catmull-Rom

我正在尝试从 Unity 中的点列表生成 Catmull-Rom 曲线。因为我不想在曲线的点之间存储点,所以我选择使用一种可以根据时间计算 Catmull-Rom 曲线中位置的解决方案。这里和这里有一些这样的例子,但是,它们都没有展示如何实现 alpha。

我想要实现 alpha 的原因是我可以有能力在向心、弦和均匀的 Catmull-Rom 曲线之间切换。

private Vector3 GetCatmullRomPosition(float t, Vector3 p0, Vector3 p1,

                                      Vector3 p2, Vector3 p3, float alpha)

{

    Vector3 a = 2f * p1;

    Vector3 b = p2 - p0;

    Vector3 c = 2f * p0 - 5f * p1 + 4f * p2 - p3;

    Vector3 d = -p0 + 3f * p1 - 3f * p2 + p3;

    return 0.5f * (a + (b * t) + (c * t * t) + (d * t * t * t));

}


红颜莎娜
浏览 211回答 1
1回答
随时随地看视频慕课网APP
我要回答