本文整理汇总了C++中ParticleManager::addForceToParticle方法的典型用法代码示例。如果您正苦于以下问题:C++ ParticleManager::addForceToParticle方法的具体用法?C++ ParticleManager::addForceToParticle怎么用?C++ ParticleManager::addForceToParticle使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ParticleManager
的用法示例。
在下文中一共展示了ParticleManager::addForceToParticle方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: addAttractiveForce
// Add attractive force
void addAttractiveForce(ParticleManager& foodManager, ParticleManager& snakeManager) {
int attractiveCoeff = 50;
glm::vec2 attractiveForce = foodManager.getParticlePosition(0) - snakeManager.getParticlePosition(0);
float d = glm::length(attractiveForce);
attractiveForce = glm::normalize(attractiveForce);
// Plus on divise et plus c'est petit : pluattractivecoeff augmente et mois l'attraction est forte au loin
snakeManager.addForceToParticle(0, glm::vec2(attractiveForce[0]/(attractiveCoeff*d), attractiveForce[1]/(attractiveCoeff*d)));
}
示例2: addRepulsiveForce
// Add repulsive force
void addRepulsiveForce(ParticleManager& repulsiveManager, ParticleManager& snakeManager) {
if(repulsiveManager.getCount() > 0) {
for(int i = 0; i < snakeManager.getCount(); ++i) {
for(int j = 0; j < repulsiveManager.getCount(); ++j) {
glm::vec2 repulse = snakeManager.getParticlePosition(i) - repulsiveManager.getParticlePosition(j);
float d = glm::length(repulse);
repulse = glm::normalize(repulse);
int repulsiveCoeff = 40;
if(d < 0.2) {
// Plus on divise et plus c'est petit : pluattractivecoeff augmente et mois l'attraction est forte au loin
snakeManager.addForceToParticle(i, glm::vec2(repulse[0]/(repulsiveCoeff*d), repulse[1]/(repulsiveCoeff*d)));
}
}
}
}
}
示例3: apply
void ConstantForce::apply(ParticleManager& pm) {
for(int i = 0; i < pm.getCount(); ++i) {
pm.addForceToParticle(i, this->getForce());
}
}