Существует ли стандартный трехмерный векторный класс в C ++ - PullRequest
5 голосов
/ 20 апреля 2011

В существующем проекте я вижу класс Vector_3d с шаблонами, с обычными операциями для векторов (в смысле алгебры).После профилирования я заметил, что в этом классе проводится много времени.

Мне было интересно, была ли хорошо известная реализация такой базовой концепции, как трехмерный вектор в C ++.Действительно, может быть проще использовать хорошую реализацию вектора вместо того, чтобы пытаться оптимизировать этот.

Редактировать: это в контексте геометрического представления некоторых объектов.Но это не зависит от какой-либо визуализации.Я посмотрю, есть ли способ избежать слишком частого вызова различных методов.И я посмотрю на предлагаемые пакеты.

Ответы [ 3 ]

6 голосов
/ 20 апреля 2011

Существует мало возможностей для улучшения в классе векторов 3d (в основном, точечные / перекрестные произведения довольно просты, умножение матриц также). Если в этом классе тратится так много времени, возможно, ваш код использует его некорректно. Вы проверили против

  • копия против ссылок
  • неправильная ассоциация (например, умножить матрицу, затем все векторы по полученной матрице, а не все векторы по цепочке матриц)

Я знаю, что в Qt есть QVector3D , который может вам помочь (кстати, они получили Vector 2D и 4D также для обычных операций с трехмерной геометрией)

3 голосов
/ 20 апреля 2011

Дейва Эберли http://www.geometrictools.com/ - отличный ресурс для этих типов классов.

1 голос
/ 15 октября 2011

Я неравнодушен к Эйген . Кроме того, он предназначен только для заголовков и имеет встроенную поддержку векторизации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...