我在粒子系统中有一个名为Spring的类.构造函数看起来像:
Spring(Particle& _a, Particle& _b);
Run Code Online (Sandbox Code Playgroud)
我有一个粒子矢量,我使用
Spring mySpring = Spring(myParticles.at(j),myParticles.at(j+1));
Run Code Online (Sandbox Code Playgroud)
在一个循环内部,在两个粒子之间增加一个弹力.到目前为止一切正常.但是,我想使用粒子的2d矢量.那是:
Spring mySpring = Spring(myParticles.at(i).at(j),myParticles.at(i).at(j+1));
Run Code Online (Sandbox Code Playgroud)
而且我没有得到粒子的参考.在第一个例子中,每当我在spring类中更改粒子时,向量中的粒子都会发生变化.在第二个示例中,更改仅在本地进行.如何更改2D矢量中的粒子?
编辑:我试着说清楚一些事情:
我有一些粒子系统,每个粒子系统都由许多粒子组成.每个粒子只应与其自身处于同一系统中的其他粒子相互作用.因此,我有一个粒子系统向量,每个粒子系统都是粒子对象的向量.(这使得2d矢量).第一维(i)是系统,第二维(j)是单个粒子.系统中的粒子相互作用(碰撞,避免,等等......)并且它们的位置发生变化.矢量得到"更新".(即参考作品).
但是,我有第二个(1d)弹簧力矢量.弹簧力也用于更新颗粒的位置.我的构造函数执行以下操作:
Spring::Spring(Particle& _a, Particle& _b) {
a=&_a;
b=&_b; }
Run Code Online (Sandbox Code Playgroud)
a和b是粒子*.所以我存储指向2d向量中的两个粒子的指针.另一个函数Spring.doSpring()改变了粒子的位置.
a->pos.x=300;
Run Code Online (Sandbox Code Playgroud)
要么
a->velocity+=something..
Run Code Online (Sandbox Code Playgroud)
在我发布的第一个例子中,我只使用了一个粒子系统,因此不需要二维矢量.一切正常.向量中的粒子得到更新.但是第二个例子我的程序运行但不管doSpring函数做了什么,2d向量中的粒子都没有得到更新.