如何在OpenGL应用程序中使用GLM :: splines?

时间:2018-10-04 20:40:49

标签: c++ opengl spline glm-math

我正在尝试使我的模型在三次样条曲线中移动,因为我正在使用glm库和this作为参考来获取曲线中的点。

这是我的使用方式:

glm::vec3 cubic_spline(const std::vector<glm::vec3>& cp, float t)
    return glm::cubic(cp[0], cp[1], cp[2], cp[3], t);

我以t = 0作为步骤从10.01调用此函数。我不知道为什么这不起作用,我为其他glm样条曲线尝试了相同的代码,而我的模型却没有达到我的预期。

我发现以下代码适用于catmull样条曲线,但不适用于其他glm样条曲线,此处t从0变为cp.size:

glm::vec3 catmull_rom_spline(const std::vector<glm::vec3>& cp, float t)
{
    // indices of the relevant control points
    int i0 = (int)glm::clamp(t - 1, 0.0f, (float)cp.size() - 1);
    int i1 = (int)glm::clamp(t, 0.0f, (float)cp.size() - 1);
    int i2 = (int)glm::clamp(t + 1, 0.0f, (float)cp.size() - 1);
    int i3 = (int)glm::clamp(t + 2, 0.0f, (float)cp.size() - 1);

    // parameter on the local curve interval
    float local_t = glm::fract(t);

    return glm::catmullRom(cp[i0], cp[i1], cp[i2], cp[i3], local_t);
}

应该如何使用glm :: splines函数?我想念什么?

0 个答案:

没有答案