У меня есть 2-я группа частиц, для которой я бы хотел установить угловую скорость, чтобы частицы вращались вокруг центра своей группы.
Я нашел этот метод, чтобы получить угловую скорость группы, и я попытался инвертировать логику, чтобы фактически установить угловую групповую скорость.
В своих попытках я оставляю большую часть логики нетронутой, получая групповую массу, групповой центр и групповую линейную скорость таким же образом. Но похоже, что большинство моих проб и ошибок не приводят к ожидаемым результатам.
Если у вас есть какие-либо знания о том, как я должен справиться с этой логической инверсией, от получения угловой скорости до ее установки, я хотел бы услышать, что вы хотите сказать.
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;
}