- Move existing OndselSolver, GNN ML layer, and tooling into GNN/ directory for integration in later phases - Add Create addon scaffold: package.xml, Init.py - Add expression DAG with eval, symbolic diff, simplification - Add parameter table with fixed/free variable tracking - Add quaternion rotation as polynomial Expr trees - Add RigidBody entity (7 DOF: position + unit quaternion) - Add constraint classes: Coincident, DistancePointPoint, Fixed - Add Newton-Raphson solver with symbolic Jacobian + numpy lstsq - Add pre-solve passes: substitution + single-equation - Add DOF counting via Jacobian SVD rank - Add KindredSolver IKCSolver bridge for kcsolve integration - Add 82 unit tests covering all modules Registers as 'kindred' solver via kcsolve.register_solver() when loaded by Create's addon_loader.
87 lines
2.1 KiB
C++
87 lines
2.1 KiB
C++
/***************************************************************************
|
|
* Copyright (c) 2023 Ondsel, Inc. *
|
|
* *
|
|
* This file is part of OndselSolver. *
|
|
* *
|
|
* See LICENSE file for details about copyright. *
|
|
***************************************************************************/
|
|
|
|
#include "DirectionCosineConstraintIJ.h"
|
|
#include "DirectionCosineIecJec.h"
|
|
#include "EndFramec.h"
|
|
#include "CREATE.h"
|
|
|
|
using namespace MbD;
|
|
|
|
DirectionCosineConstraintIJ::DirectionCosineConstraintIJ(EndFrmsptr frmi, EndFrmsptr frmj, size_t axisi, size_t axisj) :
|
|
ConstraintIJ(frmi, frmj), axisI(axisi), axisJ(axisj)
|
|
{
|
|
}
|
|
|
|
void DirectionCosineConstraintIJ::initialize()
|
|
{
|
|
ConstraintIJ::initialize();
|
|
initaAijIeJe();
|
|
}
|
|
|
|
void DirectionCosineConstraintIJ::initializeLocally()
|
|
{
|
|
aAijIeJe->initializeLocally();
|
|
}
|
|
|
|
void DirectionCosineConstraintIJ::initializeGlobally()
|
|
{
|
|
aAijIeJe->initializeGlobally();
|
|
}
|
|
|
|
void DirectionCosineConstraintIJ::initaAijIeJe()
|
|
{
|
|
aAijIeJe = CREATE<DirectionCosineIecJec>::With(frmI, frmJ, axisI, axisJ);
|
|
}
|
|
|
|
void DirectionCosineConstraintIJ::postInput()
|
|
{
|
|
aAijIeJe->postInput();
|
|
ConstraintIJ::postInput();
|
|
}
|
|
|
|
void DirectionCosineConstraintIJ::calcPostDynCorrectorIteration()
|
|
{
|
|
aG = aAijIeJe->aAijIeJe - aConstant;
|
|
}
|
|
|
|
void DirectionCosineConstraintIJ::prePosIC()
|
|
{
|
|
aAijIeJe->prePosIC();
|
|
ConstraintIJ::prePosIC();
|
|
}
|
|
|
|
void DirectionCosineConstraintIJ::postPosICIteration()
|
|
{
|
|
aAijIeJe->postPosICIteration();
|
|
ConstraintIJ::postPosICIteration();
|
|
}
|
|
|
|
ConstraintType DirectionCosineConstraintIJ::type()
|
|
{
|
|
return perpendicular;
|
|
}
|
|
|
|
void DirectionCosineConstraintIJ::preVelIC()
|
|
{
|
|
aAijIeJe->preVelIC();
|
|
ConstraintIJ::preVelIC();
|
|
}
|
|
|
|
void MbD::DirectionCosineConstraintIJ::simUpdateAll()
|
|
{
|
|
aAijIeJe->simUpdateAll();
|
|
ConstraintIJ::simUpdateAll();
|
|
}
|
|
|
|
void DirectionCosineConstraintIJ::preAccIC()
|
|
{
|
|
aAijIeJe->preAccIC();
|
|
ConstraintIJ::preAccIC();
|
|
}
|