我正在尝试一些来自http://nehe.gamedev.net的教程,为了学习 openGL 编程,我想沿着贝塞尔曲线定位球体,使它们看起来像一串珍珠。我怎样才能沿着曲线定位这些球体。我正在使用 de Casteljau 的算法绘制曲线,因此可以获得曲线上的 XYZ 点。
问问题
748 次
1 回答
1
如果您的球体相对于贝塞尔曲线的总长度足够小,您可以将球体以均匀的间隔放置,以获得类似于一串珍珠的外观。(如果球体相对较大,那么您将不得不开始更多地担心球体重叠 - 这不是一个简单的问题,并且可能对学习 OpenGL 没有太大的指导意义。)
贝塞尔曲线的参数值t
从0
到变化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
最小距离的一半并作为粗略估计。如果您这样做,请记住专门处理端点,仅使用下一个或前一个点(无论您拥有哪个)。i
i-1
i+1
于 2009-06-30T05:36:54.500 回答