Вы не очень хорошо описываете свою ситуацию, но я предполагаю, что вы делаете какую-то игру или симулятор?
Я бы предложил вам с самого начала использовать физический движок, такой как Bullet или ODE . Таким образом, вы получите правильно оптимизированную матричную библиотеку, а также хорошо протестированные средства обнаружения и обработки коллизий. Использование какой-либо другой математической библиотеки общего назначения может показаться более простым на первый взгляд. Однако он, вероятно, будет менее приспособлен к вашим потребностям и, несомненно, станет беспорядком для замены физическим движком, если вы решите использовать его позже.
Вам не нужно сразу использовать все модные функции физического движка. На самом деле вы могли бы просто использовать матричную и векторную реализацию и пропустить остальное до следующего.