MCPcopy Create free account
hub / github.com/OGSR/OGSR-Engine / SmoothElementsInertia

Method SmoothElementsInertia

ogsr_engine/xrGame/PHShell.cpp:484–512  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

482 TransformPosition(replace);
483}
484void CPHShell::SmoothElementsInertia(float k)
485{
486 dMass m_avrg;
487 dReal krc = 1.f - k;
488 dMassSetZero(&m_avrg);
489 ELEMENT_I i;
490 for (i = elements.begin(); elements.end() != i; ++i)
491 {
492 dMassAdd(&m_avrg, (*i)->getMassTensor());
493 }
494 int n = (int)elements.size();
495 m_avrg.mass *= k / float(n);
496 for (int j = 0; j < 4 * 3; ++j)
497 m_avrg.I[j] *= k / float(n);
498
499 for (i = elements.begin(); elements.end() != i; ++i)
500 {
501 dVector3 tmp;
502 dMass* m = (*i)->getMassTensor();
503 dVectorSet(tmp, m->c);
504
505 m->mass *= krc;
506 for (int j = 0; j < 4 * 3; ++j)
507 m->I[j] *= krc;
508 dMassAdd(m, &m_avrg);
509
510 dVectorSet(m->c, tmp);
511 }
512}
513
514void CPHShell::setEquelInertiaForEls(const dMass& M)
515{

Callers 2

CreateBrokenMethod · 0.80
CreateSkeletonMethod · 0.80

Calls 7

dMassSetZeroFunction · 0.85
dMassAddFunction · 0.85
dVectorSetFunction · 0.85
getMassTensorMethod · 0.80
beginMethod · 0.45
endMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected