| 482 | TransformPosition(replace); |
| 483 | } |
| 484 | void 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 | |
| 514 | void CPHShell::setEquelInertiaForEls(const dMass& M) |
| 515 | { |
no test coverage detected