#include "AbsConstraint.h" #include "PartFrame.h" using namespace MbD; // //AbsConstraint::AbsConstraint() {} // //AbsConstraint::AbsConstraint(const char* str) : Constraint(str) {} AbsConstraint::AbsConstraint(int i) { axis = i; } void AbsConstraint::initialize() { Constraint::initialize(); } void MbD::AbsConstraint::calcPostDynCorrectorIteration() { if (axis < 3) { aG = static_cast(owner)->qX->at(axis); } else { aG = static_cast(owner)->qE->at(axis - 3); } } void MbD::AbsConstraint::useEquationNumbers() { iqXminusOnePlusAxis = static_cast(owner)->iqX + axis; } void MbD::AbsConstraint::fillPosICJacob(SpMatDsptr mat) { (*(mat->at(iG)))[iqXminusOnePlusAxis] += 1.0; (*(mat->at(iqXminusOnePlusAxis)))[iG] += 1.0; } void MbD::AbsConstraint::fillPosICError(FColDsptr col) { Constraint::fillPosICError(col); col->at(iqXminusOnePlusAxis) += lam; }