Если ваши сферы достаточно малы относительно общей длины кривой Безье, вы можете просто расположить их с равными интервалами, чтобы получить вид, похожий на жемчужную нить. (Если сферы относительно велики, вам придется больше беспокоиться о перекрытии сфер - задача не из легких и, вероятно, не очень полезна для изучения OpenGL.)
Значение параметра t
кривой Безье варьируется от 0
до 1
. Чтобы оценить кривую Безье в 10 местах (на концах и в восьми внутренних точках), вы можете сделать что-то вроде этого:
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)
для данного t
. Просто выберите radius
, чтобы получить приятный результат. Если вы хотите попытаться выбрать radius
автоматически, просто используйте половину минимального расстояния от точки i
до точек i-1
и i+1
в качестве приблизительной оценки. Если вы сделаете это, не забудьте обработать конечные точки специально, используя только следующие или предыдущие точки (в зависимости от того, что у вас есть).