You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用类成员函数后粒子成员变量值未更新,求问题原因及解决

问题原因与解决办法

你的问题出在update_particles函数的遍历方式上:

for (particle p : particles)
{
    p.update_pos();
}

这里的particle p是对vector中每个粒子的值拷贝,你调用p.update_pos()修改的只是临时创建的副本对象,循环结束后这个副本就会被销毁,原vector里的粒子完全没有被改动,自然v_x、v_y等属性的新值无法保留。

解决方法很简单,把遍历改成引用传递,让p直接指向vector中的原对象:

for (particle& p : particles)
{
    p.update_pos();
}

这样调用p.update_pos()时,修改的就是原vector里的粒子实例,属性值的更新会被正确保留下来。

另外补充一点:你的update_pos函数里,加速度a_x和a_y是持续累加的(a_y += g / mass),这会导致加速度不断增大,实际物理模拟中可能不符合预期(比如自由落体的加速度应该是恒定的),如果是模拟重力,应该把a_y = g / mass而不是累加,不过这属于物理逻辑的调整,和当前的属性不保留问题无关。

内容的提问来源于stack exchange,提问作者Kevin Karlsson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 17:20:27