沿着贝塞尔曲线定位球体

时间:2009-06-30 03:49:42

标签: math opengl bezier

我正在尝试来自http://nehe.gamedev.net的几个教程,为了学习openGL编程,我想沿着Bezier曲线定位球体,使它们看起来像一串珍珠。如何沿着曲线定位这样的球体。我使用de Casteljau算法绘制曲线,因此可以得到曲线上的XYZ点。

1 个答案:

答案 0 :(得分:1)

如果您的球体相对于贝塞尔曲线的整体长度足够小,您可以按照均匀的间隔定位球体,以获得类似于一串珍珠的外观。 (如果球体相对较大,那么你将不得不开始担心球体重叠 - 这不是一个简单的问题,对于学习OpenGL可能不是很有启发性。)

贝塞尔曲线的参数值t01不等。要评估10个位置(末端和8个内点)的贝塞尔曲线,您可以执行以下操作:

for( int i = 0; i <= 9; ++i )
{
    double t = i / 9.0;
    double x, y;
    EvalBezier( t, x, y );
    DrawSphere( x, y, radius );
} 

EvalBezier( t, x, y )填写给定(x,y)的{​​{1}}。只需选择t即可获得满意的结果。如果您想尝试自动选择radius,只需使用从点radius到点ii-1的最小距离的一半作为粗略估算。如果你这样做,请记住特别使用下一个或前一个点(无论你有哪个)来处理终点。

相关问题