1

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

4

1 回答 1

1

如果您的球体相对于贝塞尔曲线的总长度足够小,您可以将球体以均匀的间隔放置,以获得类似于一串珍珠的外观。(如果球体相对较大,那么您将不得不开始更多地担心球体重叠 - 这不是一个简单的问题,并且可能对学习 OpenGL 没有太大的指导意义。)

贝塞尔曲线的参数值t0到变化1。要在 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 );
} 

WhereEvalBezier( t, x, y )填写(x,y)给定的t. 只radius为给你一个满意的结果。如果您想尝试自动选择,只需使用从点到点的radius最小距离的一半并作为粗略估计。如果您这样做,请记住专门处理端点,仅使用下一个或前一个点(无论您拥有哪个)。ii-1i+1

于 2009-06-30T05:36:54.500 回答