我有一个2d组的粒子,我想设置它的角速度,让粒子绕组的中心旋转。设置角速度为2d粒子群
我发现这种方法得到组的角速度,我试过反转逻辑来实际设置角组速度。
在我的尝试中,我通过以同样的方式获得组质量,组中心和组线速度,使大部分逻辑完好无损。但是,似乎我的大多数试验和错误都不能达到预期的结果。
如果您有任何关于如何解决从获取角速度到设置它的逻辑反转的知识,我很乐意听到您要说的话。
getParticleGroupAngularVelocity()
{
particleCount = 30;
particleMass = 1.5;
particleGroupMass = 0;
particleGroupInertia = 0;
particleGroupAngularVelocity = 0;
particleGroupCenter = vector(0, 0);
particleGroupLinearVelocity = vector(0, 0);
for (i = 0; i < particleCount; i++)
{
particleGroupMass += particleMass;
particleGroupCenter += particleMass * particles[i].position;
particleGroupLinearVelocity += particleMass * particles[i].velocity;
}
if (particleGroupMass > 0)
{
particleGroupCenter *= 1/particleGroupMass;
particleGroupLinearVelocity *= 1/particleGroupMass;
}
for (i = 0; i < particleCount; i++)
{
pos = particles[i].position - particleGroupCenter;
vel = particles[i].velocity - particleGroupLinearVelocity;
particleGroupInertia += particleMass * (pos.x * pos.x + pos.y * pos.y);
particleGroupAngularVelocity += particleMass * (pos.x * vel.y - pos.y * vel.x);
}
if (particleGroupInertia > 0)
{
particleGroupAngularVelocity *= 1/particleGroupInertia;
}
return particleGroupAngularVelocity;
}
你有一组粒子,你想改变一些或所有粒子的速度,以便给这个组所需的“组角速度“(我使用松散的术语,与此代码相同),同时保持”组线速度“相同,是吗?你有其他条件吗?我问,因为有很多方法可以做到这一点。 – Beta
我希望能够在保持组线速度的同时改变所有粒子的速度。因此,如果这组粒子在x轴和/或y轴上以恒定速度运动,我希望能够使这组粒子围绕它们的中心旋转,而不会影响它们的其他运动。 – Claudia
至于其他条件,我真的不能想到其他条件。但是,我可能也缺乏对这个问题的一些见解。 – Claudia