C++ (Qt)
void DrawCurve(PointGenerator * generator, Time from, Time to, Time step)
{
for (Time time = from; time <= to; time += step )
AddOpenGLVertex(generator->generate(time));
}
Если Вам нравится, итерируя по точкам кривой, каждый раз писать как в варианте 1, то, как говорится: хозяин - барин
. Я же предпочитаю второй вариант.
Второй вариант как раз то о что "разбивают ноги". Кто такой Time? Ах, сейчас просто double, это так, "на будущее". Кто такой PointGenerator? Надо открывать хедер, скорее всего еще и исходник. А там еще куда-то отфутболят. От этого лазания по бесконечному делегированию быстро устаем. Кто мешал сразу делать содержательную часть - хотя бы найти пару точек кривой? ЗАЧЕМ нужна прокладка? Какую "гибкость" мы хотели этим создать
Основной вопрос: эта кривая нужна больше чтобы её использовать как конечный набор точек(интерполированных) на заданном интервале времени, или она нужна чтобы её постоянно редактировали, загружали/сохраняли/печатали её ключи?
Не считал чего больше, но оба аспекта (интерполяция и редактирование) юзаются очень интенсивно. Только никак не пойму какое отношение это имеет к данной теме:?
Но может быть такой сценарий использования, что параметры сплайна используются при интерполяции, загружаются из файла и в программе не редактируются. Может эти ключевые точки формируются во внешнем продвинутом редакторе, снимаются с датчиков motion capture, да мало ли ещё откуда появляются.
Да, и из файлов, и из очень многих других мест (все и не помню). И что? Разве это как-то влияет на структуру данных?