Класс Vector2 в C ++ - PullRequest
       5

Класс Vector2 в C ++

3 голосов
/ 21 сентября 2011

В C ++ есть класс Vector2 и, если да, что мне нужно включить, чтобы использовать его?

Я хочу использовать это для хранения 2-мерных векторов, таких как положение или скорость частицы.

Ответы [ 4 ]

5 голосов
/ 21 сентября 2011

Вот, пожалуйста.

struct Vector2
{
  float x;
  float y;
};

Или же вы можете использовать std::pair<float, float>.

Тогда вы захотите узнать больше о структуре массивов (SOA) против массивов структур(AOS) и как это влияет на производительность вашего кода.

Системы частиц обычно переходят на SOA.

Наконец, вот серия публикаций в блогах по AOS и SOA, примененных креализация системы частиц .

EDIT: есть хорошие математические библиотеки, такие как Eigen или glm , которые будут определять такие типы для вас вместе со многимиполезные алгоритмы (с реализациями-исполнителями).

3 голосов
/ 21 сентября 2011

В стандартных библиотеках нет класса "vector2".Существует парный класс, который бы соответствовал вашим потребностям, но для этого сценария, вероятно, было бы лучше создать свой собственный векторный класс (потому что тогда вы получите переменные с именами x и y, а не first и second), например,

class Vector2
{
public:
   double x;
   double y;

   Vector2( double x, double y);
   ... etc
}

Затем вы можете перегрузить оператор +, добавить функции для нахождения продукта со скрещенными точками и т. Д.

Класс std :: vector НЕ является тем, что вам нужно.Класс std :: vector в значительной степени является заменой для ошибочных массивов C.

0 голосов
/ 21 сентября 2011

Почему бы вам просто не сделать вектор векторов?

std::vector<std::vector<YourType> > yourvector;

Или для вектора пар,

std::vector<std::pair<float, float> > yourvector;
0 голосов
/ 21 сентября 2011

В заголовке <utility> есть std::pair. Тем не менее, он не поддерживает векторную арифметику.

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