У меня есть класс с именем Spring в системе частиц. Конструктор выглядит так:
Spring(Particle& _a, Particle& _b);
И у меня есть вектор частиц, и я использую
Spring mySpring = Spring(myParticles.at(j),myParticles.at(j+1));
внутри петли, чтобы добавить силу пружины между двумя частицами. Пока все отлично работает.
Тем не менее, я хочу использовать 2d вектор частиц. То есть:
Spring mySpring = Spring(myParticles.at(i).at(j),myParticles.at(i).at(j+1));
И я не получаю ссылку на частицу. В первом примере, когда я меняю частицу в своем классе пружины, частица в векторе меняется. Во втором примере изменения только локально. Как я могу изменить частицы в 2D векторе?
EDIT:
Я пытаюсь прояснить некоторые вещи:
У меня есть несколько систем частиц, и каждая из них состоит из нескольких частиц. Каждая частица должна взаимодействовать только с другими частицами, которые находятся в той же системе, что и она сама. Поэтому у меня есть вектор систем частиц, где каждая система частиц является вектором объектов частиц. (Это делает 2d вектор). Первое измерение (i) - это система, второе (j) - отдельная частица.
Частицы в системе взаимодействуют друг с другом (сталкиваются, избегают, что угодно ..), и их положения меняются. И вектор «обновляется». (То есть ссылка работает).
Однако у меня есть второй (1d) вектор сил пружины. Усилие пружины также используется для обновления положения частиц.
Мой конструктор делает следующее:
Spring::Spring(Particle& _a, Particle& _b) {
a=&_a;
b=&_b; }
А и В - это частица *. Так что я храню указатели на две частицы в 2-м векторе. Другая функция Spring.doSpring () изменяет положение частиц.
a->pos.x=300;
или
a->velocity+=something..
В первом примере, который я опубликовал, я использовал только одну систему частиц, и поэтому не было необходимости в двухмерном векторе. И все работает отлично. Частицы в векторе обновляются.
Но во втором примере моя программа запускается, но каким-то образом, независимо от того, что делает функция doSpring, частицы в 2d-векторе не обновляются.