File indexing completed on 2024-04-21 03:51:22
0001 /* 0002 SPDX-FileCopyrightText: 2007 Vladimir Kuznetsov <ks.vladimir@gmail.com> 0003 SPDX-FileCopyrightText: 2014 Inge Wallin <inge@lysator.liu.se> 0004 0005 SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 #include "joint.h" 0009 0010 0011 namespace StepCore 0012 { 0013 0014 STEPCORE_META_OBJECT(Joint, QT_TRANSLATE_NOOP("ObjectClass", "Joint"), QT_TRANSLATE_NOOP("ObjectDescription", "Joint"), 0015 MetaObject::ABSTRACT,,) 0016 0017 0018 void ConstraintsInfo::setDimension(int newVariablesCount, int newConstraintsCount, int newContactsCount) 0019 { 0020 // std::cerr << " ConstraintsInfo::setDimension(" 0021 // << newVariablesCount <<","<< newConstraintsCount <<"," << newContactsCount << ")\n"; 0022 0023 int totalConstraintsCount = newConstraintsCount+newContactsCount; 0024 0025 jacobian.resize(totalConstraintsCount, newVariablesCount); 0026 jacobianDerivative.resize(totalConstraintsCount, newVariablesCount); 0027 inverseMass.resize(newVariablesCount); 0028 force.resize(newVariablesCount); 0029 value.resize(totalConstraintsCount); 0030 derivative.resize(totalConstraintsCount); 0031 if (totalConstraintsCount>0) 0032 { 0033 derivative.setZero(); 0034 value.setZero(); 0035 } 0036 forceMin.resize(totalConstraintsCount); 0037 forceMax.resize(totalConstraintsCount); 0038 0039 contactsCount = newContactsCount; 0040 constraintsCount = newConstraintsCount; 0041 variablesCount = newVariablesCount; 0042 } 0043 0044 void ConstraintsInfo::clear() 0045 { 0046 jacobian.setZero(); 0047 jacobianDerivative.setZero(); 0048 if(inverseMass.size()>0) 0049 { 0050 inverseMass.setZero(); 0051 } 0052 if(forceMin.size()>0) 0053 { 0054 forceMin.fill(-HUGE_VAL); 0055 forceMax.fill(HUGE_VAL); 0056 } 0057 0058 collisionFlag = false; 0059 } 0060 0061 } // namespace StepCore