Как вариант. Но при больших n всё равно глупо гонять цикл лишние тысячи раз ради одного +1, лучше просто прибавлять сразу разницу между соседними числами последовательности. Это сразу понизит сложность алгоритма с O(N) до O(sqrt(N)).
Триангуляция Делоне позволяет определить какие точки являются соседними. Простая сортировка в пространстве может и не подойти. К сожалению, я не знаю особенностей ваших данных.
Не все мониторы мерцают. Сейчас многие стараются делать не мерцающие. А старые с cfl лампами совсем не мерцали. Синего со светодиодами стало больше, но можно компенсировать профилями, если работа не связана с графикой.
На мой взгляд, из двух зол нужно выбирать меньшее. Одна лишняя строчка в хидере вместо огорода дополнительных интерфейсов, думаю, вполне может быть оправдана. К тому же она всё равно будет в private секции, в которую никто не должен смотреть при использовании класса.
То есть, делается одна модель со скелетом, развёрткой и текстурами. К ней создаётся несколько Morph Target-ов с перетянутыми разными способами вершинами. Каждый такой Morph Target соответствует одному изменению (слайдеру в интерфейсе). При настройке в соответствии с позицией слайдеров все врешины интерполируются между базовой моделью и целями.
Можно, конечно, и скелетную анимацию использовать, но это извращение.
К сожалению, не могу найти ссылки. Но точно видел в продаже готовые подобные камеры не дороже 60$. Должны работать не только в темноте, но для этого нужны ИК фильтры, чтобы пропускать только узкую часть спектра. Наподобие фильтров на ИК пульте и приёмнике.
В данном случае основное преимущество - цена. Она ниже, чем на аналогичный по производительности i7.
Хотя, всё зависит от задач. Для игр, возможно стоит купить i5 K серии с соответствующей материнкой под разгон, тогда однопоточные задачи (коими большая часть игр практически и является), будут работать быстрее. Если же нужна рабочая машина для 3D графики / монтажа видео / прочих ресурсоёмких задач, то лучше взять за те же деньги Xeon с HT. Это если видео всё-равно планируется дискретное.
Можно и с помощью up, но вам придётся рассчитывать его поворот относительно линии взгляда, так как если его просто повернуть вокруг оси Z, то поворачиваться он будет в исходной системе координат.
Так что, скорее всего, проще перемножить две матрицы: gluLookAt и glRotate, и использовать результат. Только я не помню, в какой последовательности их надо перемножать.