C ++中的内插样条曲线

问题描述 投票:0回答:1

有人对创建插值样条曲线有任何建议吗?我正在尝试在opengl中开发游戏,但无法使对象遵循曲线。该函数应该像........]

void interpolatePath(Vec3d startPos, Vec3d targetPos, float u, Vec3d &interpPos)

对象从某个位置开始,用户单击,然后对象移动到该位置。现在有了它,使对象沿一条直线移动,但是我希望它遵循一条曲线。

以上功能中的直线代码:

//interpPos.x = (u)*targetPos.x+(1-u)*startPos.x;
  //interpPos.y = (u)*targetPos.y+(1-u)*startPos.y;
  //interpPos.z = (u)*targetPos.z+(1-u)*startPos.z;

贝塞尔曲线会起作用吗?我将如何实施?

[x,y] =(1-t)^ 3P0 + 3(1-t)^ 2tP1 + 3(1-t)t ^ 2P2 + t ^ 3P3

谢谢

有人对创建插值样条曲线有任何建议吗?我正在尝试在opengl中开发游戏,但无法使对象遵循曲线。该函数应类似于.......

c++ spline
1个回答
0
投票

您可以使用B-Spline内插给定的点集,其中多项式或三次内插需要3个点。如果不是,则应为线性插值。在这里,我将为您提供一个使用Eigen lib进行B样条插值的示例。

© www.soinside.com 2019 - 2024. All rights reserved.