equation.h File Reference Detailed DescriptionDefinition of the Tequation type and the associated functions.
Definition in file equation.h.
Macro Definition Documentation
Maximum number of terms to be used in the simplifications. This variable is defined for experimental purposes. Do not use a value larger than 1. Definition at line 31 of file equation.h. Referenced by IsSimplificable(), and SimplifyCuikSystem().
Initial room for monomials in an equation. It will be enlarged if necessary.
Definition at line 40 of file equation.h. Referenced by InitEquation().
One of the possible type of equations according to the type of monomials it includes.
Definition at line 53 of file equation.h. Referenced by CopyEquationInfo(), DeleteEquationInfo(), ErrorDueToVariable(), and SetEquationInfo().
One of the possible type of equations according to the type of monomials it includes.
Definition at line 62 of file equation.h. Referenced by AddEquation2Simplex(), CopyEquationInfo(), CropEquation(), DeleteEquationInfo(), ErrorDueToVariable(), SetEquationInfo(), and UpdateSplitWeight().
One of the possible type of equations according to the type of monomials it includes.
Definition at line 71 of file equation.h.
One of the possible type of equations according to the type of monomials it includes.
Definition at line 80 of file equation.h. Referenced by AddEquation2Simplex(), CropEquation(), and SetEquationInfo().
One of the possible type of equations according to the type of monomials it includes.
Definition at line 89 of file equation.h. Referenced by AddEquation2Simplex(), CropEquation(), and SetEquationInfo().
One of the possible type of equations according to the type of monomials it includes.
Definition at line 98 of file equation.h. Referenced by AddEquation2Simplex(), CropEquation(), and SetEquationInfo().
One of the possible type of equations according to the type of monomials it includes.
Definition at line 107 of file equation.h. Referenced by AddEquation2Simplex(), CropEquation(), and SetEquationInfo().
One of the possible type of equations according to the type of monomials it includes.
Definition at line 116 of file equation.h. Referenced by AddEquation2Simplex(), CropEquation(), and SetEquationInfo().
One of the possible type of equations. This is used for equations not of the types listed above but that there are still of order below 3.
Definition at line 126 of file equation.h. Referenced by AddEquation2Simplex(), CropEquation(), and SetEquationInfo().
Used for equations with non-assigned type, i.e., equations not fully processed.
Definition at line 135 of file equation.h.
One of the possible type of equations according its role in the cuiksytem.
Definition at line 146 of file equation.h. Referenced by AddEquationInt(), AddJacobianEquationsInt(), AdjustBioWorldGeometry(), EvaluateEqualityEquations(), GenerateCrossProductEquations(), GenerateDotProductEquation(), GenerateGeneralNormEquation(), GenerateJointEquations(), GenerateJointRangeEquations(), GenerateJointRangeSingularityEquations(), GenerateLinkRotQLinks(), GetEquationTypeN(), GetSCpSystem(), InitWorldKinCS(), IsSystemEquation(), and SHTransformInit().
One of the possible type of equations according its role in the cuiksytem.
Definition at line 155 of file equation.h. Referenced by AddEquationInt(), GenerateEquationsFromBranch(), GenerateWorldEquations(), GenerateWorldSingularityEquations(), and IsCoordEquation().
One of the possible type of equations according its role in the cuiksytem.
Definition at line 164 of file equation.h. Referenced by AddEquationInt(), AdjustBioWorldGeometry(), DummifyAndAddEquation(), GaussianElimination(), GenerateScaledParabolaEquation(), GenerateScaledSaddleEquation(), IsDummyEquation(), and UsedVarInNonDummyEquations().
One of the possible type of equations according its role in the cuiksytem. This is for equations resulting from a derivative.
Definition at line 174 of file equation.h. Referenced by DeriveEquation().
Used for equations with non assigned role yet.
Definition at line 182 of file equation.h. Referenced by AddEquation(), AddEquationNoSimp(), GetEquationTypeN(), InitEquation(), and ResetEquation().
In a Tequation, the equation relational operator is great equal. Definition at line 189 of file equation.h. Referenced by AddEquation2Simplex(), CleanInfEquation(), EquationFromLinearConstraint(), EvaluateInequalityEquations(), GetEquationBounds(), LinearizeBilinealMonomialEquation(), LinearizeCircleEquation(), LinearizeSaddleEquation(), LinearizeSphereEquation(), PrintEquation(), ReplaceVariableInEquation(), SetEquationCmp(), SimplexAddNewConstraint(), and SimplexExpandBounds().
In a Tequation, the equation relational operator is less equal. Definition at line 195 of file equation.h. Referenced by AddEquation2Simplex(), CleanInfEquation(), EquationFromLinearConstraint(), GetEquationBounds(), LinearizeBilinealMonomialEquation(), LinearizeCircleEquation(), LinearizeParabolaEquation(), LinearizeSaddleEquation(), LinearizeSphereEquation(), PrintEquation(), ReplaceVariableInEquation(), SetEquationCmp(), SimplexAddNewConstraint(), and SimplexExpandBounds().
In a Tequation, the equation relational operator is equal. Definition at line 201 of file equation.h. Referenced by AddEquation2Simplex(), AddEquationInt(), AddJacobianEquationsInt(), AddTerm2SearchCriterion(), AdjustBioWorldGeometry(), BilinealMonomialEquation(), CacheScalarEQUInfo(), CropEquation(), CtScaleEquation(), DeriveEqualityEquations(), DeriveEquation(), DummifyAndAddEquation(), EquationFromLinearConstraint(), EvaluateEqualityEquations(), EvaluateInequalityEquations(), EvaluateSubSetEqualityEquations(), GaussianElimination(), GenerateCrossProductEquations(), GenerateDotProductEquation(), GenerateGeneralNormEquation(), GenerateJointEquations(), GenerateJointRangeEquations(), GenerateJointRangeSingularityEquations(), GenerateLinkRotQLinks(), GenerateScaledParabolaEquation(), GenerateScaledSaddleEquation(), GenerateTransEquationsFromBranch(), GetEquationBounds(), GetSCpSystem(), IsSimplificable(), LinearizeParabolaEquation(), NormalizeEquation(), ParabolaEquation(), PrintEquation(), PrintMonomials(), ReplaceVariableInEquation(), SaddleEquation(), SetEquationCmp(), SHTransformInit(), SimplexAddNewConstraint(), and VarScaleEquation().
In a Tequation, the equation relational operator is not definet yet. Definition at line 207 of file equation.h. Referenced by AddEquation(), AddEquationNoSimp(), EvaluateEquation(), EvaluateEquationInt(), EvaluateWholeEquation(), GetEquationBounds(), InitEquation(), PrintEquation(), and ResetEquation(). Function Documentation
Creates an empty equation.
Definition at line 86 of file equation.c. References Tequation::cmp, INIT_NUM_MONOMIALS, InitVarSet(), Tequation::maxMonomials, Tequation::monomials, NEW, Tequation::nMonomials, NOCMP, NOTYPE_EQ, Tequation::order, Tequation::polynomial, TRUE, Tequation::type, Tequation::value, and Tequation::vars. Referenced by AddJacobianEquationsInt(), AddTerm2SearchCriterion(), AdjustBioWorldGeometry(), ApplyLinkRotVar(), CleanInfEquation(), DotProductEqVectors(), DummifyAndAddEquation(), EquationFromLinearConstraint(), EquationFromLinearConstraintProduct(), GenerateCrossProductEquations(), GenerateDotProductEquation(), GenerateGeneralNormEquation(), GenerateJointEquations(), GenerateJointRangeEquations(), GenerateJointRangeSingularityEquations(), GenerateLinkRotQLinks(), GenerateScaledParabolaEquation(), GenerateScaledSaddleEquation(), GenerateTransEquationsFromBranch(), GetSCpSystem(), InitCuikSystem(), InitEqVector(), ProductEquations(), PurgeEquation(), ReplaceVariableInEquation(), RewriteEquation2Orig(), RewriteEquation2Simp(), SHTransformApplyRot(), SHTransformFromEqVectors(), and SHTransformInit().
Removes the information stored in the equation, but does not frees the memory. It is more efficient to use ResetEquation instead of DeleteEquation plus InitEquation again.
Definition at line 442 of file equation.c. References Tequation::cmp, NOCMP, NOTYPE_EQ, Tequation::order, Tequation::polynomial, ResetEquationMonomials(), ResetVarSet(), TRUE, Tequation::type, Tequation::value, and Tequation::vars. Referenced by GenerateJointRangeSingularityEquations(), and UpdateCuikSystem().
Defines a new equation from a linear constraint. Only linear constraint with a constant right-hand term can be converted to equations. For other linear constraints this funtion triggers an error.
Definition at line 106 of file equation.c. References AddCt2Monomial(), AddMonomial(), AddVariable2Monomial(), Tequation::cmp, DeleteMonomial(), EQU, Error(), GEQ, GetLinearConstraintCoefficient(), GetLinearConstraintError(), GetLinearConstraintVariable(), GetNumTermsInLinearConstraint(), INF, InitEquation(), InitMonomial(), IntervalCenter(), IntervalSize(), LEQ, LowerLimit(), NFUN, UpperLimit(), and Tequation::value. Referenced by RewriteEquation2Simp().
Defines a new equation from the product of two linear constraint. Only linear constraint with a constant right-hand term are considered. For other linear constraints this funtion triggers an error.
Definition at line 156 of file equation.c. References AddCt2Monomial(), AddMonomial(), AddVariable2Monomial(), DeleteMonomial(), Error(), GetLinearConstraintCoefficient(), GetLinearConstraintError(), GetLinearConstraintVariable(), GetNumTermsInLinearConstraint(), InitEquation(), InitMonomial(), IntervalCenter(), IntervalSize(), and NFUN. Referenced by RewriteEquation2Simp(). Creates one equation copying the information from another equation.
Definition at line 216 of file equation.c. References AddMonomial(), Tequation::cmp, InitVarSet(), Tequation::maxMonomials, Tequation::monomials, NEW, Tequation::nMonomials, Tequation::order, Tequation::polynomial, Tequation::type, Tequation::value, and Tequation::vars. Referenced by AddJacobianEquationsInt(), CopyCuikSystem(), CopyEquationInfo(), CopyEqVector(), CrossProductVectorEqVector(), CuikSystemMerge(), DotProductVectorEqVector(), GaussianElimination(), GenerateWorldSingularityEquations(), GetCSEquation(), GetSCpSystem(), ProductEquations(), PurgeEquation(), ReplaceVariableInEquation(), RewriteEquation2Orig(), RewriteEquation2Simp(), SetCSSearchMode(), SetEquationInfo(), SHTransformApply(), SHTransformCopy(), SHTransformFromEqVectors(), SHTransformInverse(), and SHTransformTranspose(). Transform an equation expressed in a given set of variables into an equation in the simplified set of variables. The relation between the two sets of variables is given by a mapping.
Definition at line 237 of file equation.c. References AccumulateEquations(), AddMonomial(), Tequation::cmp, CopyEquation(), DeleteEquation(), DeleteLinearConstraint(), EquationFromLinearConstraint(), EquationFromLinearConstraintProduct(), Error(), GetMonomialCt(), GetMonomialVariables(), GetOriginalVarRelation(), GetVariableFunctionN(), GetVariableN(), InitEquation(), MonomialOrder(), Tequation::monomials, NFUN, Tequation::nMonomials, Tequation::polynomial, PurgeEquation(), Tequation::type, Tequation::value, and VariableSetSize(). Referenced by UpdateCuikSystem(). Transform an equation expressed in a simplified set of variables into an equation in the original set of variables. The relation between the two sets of variables is given by a mapping.
Definition at line 321 of file equation.c. References AddMonomial(), AddVariable2Monomial(), Tequation::cmp, CopyEquation(), DeleteEquation(), DeleteMonomial(), Error(), GetMonomialCt(), GetMonomialVariables(), GetVariableFunctionN(), GetVariableN(), GetVariablePowerN(), GetVarIDInOriginal(), InitEquation(), InitMonomial(), Tequation::monomials, Tequation::nMonomials, NO_UINT, Tequation::polynomial, ResetMonomial(), SetMonomialCt(), Tequation::type, Tequation::value, and VariableSetSize(). Referenced by AddSimplifiedJacobianEquations(). Adds a scaled equation to another equation.
Definition at line 366 of file equation.c. References AddScaledMonomial(), Tequation::monomials, Tequation::nMonomials, PurgeEquation(), and Tequation::value. Referenced by AccumulateEqVectors(), AddJacobianEquationsInt(), AddTerm2SearchCriterion(), CrossProductEqVectors(), CrossProductVectorEqVector(), CuikSystemMerge(), DotProductEqVectors(), DotProductVectorEqVector(), GaussianElimination(), GetSCpSystem(), ProductEquations(), RewriteEquation2Simp(), SHTransformAdd(), SHTransformApply(), SHTransformApplyRot(), SHTransformInverse(), SHTransformPostCtProduct(), SHTransformPreCtProduct(), and SHTransformProduct(). Adds a scaled equation to another equation. This is like AccumulateEquations but here the scale is with a variable and not with a constnat
Definition at line 377 of file equation.c. References AddMonomial(), AddVariable2Monomial(), CopyMonomial(), DeleteMonomial(), InitMonomial(), Tequation::monomials, NFUN, Tequation::nMonomials, PurgeEquation(), SetMonomialCt(), and Tequation::value. Referenced by ApplyLinkRotVar(), and VarAccumulateEqVectors(). Generates an equations that is the product of two given equations.
Definition at line 398 of file equation.c. References AccumulateEquations(), AddMonomial(), Tequation::cmp, CopyEquation(), DeleteEquation(), DeleteMonomial(), Error(), InitEquation(), MonomialProduct(), Tequation::monomials, NEW, Tequation::nMonomials, PurgeEquation(), Tequation::type, and Tequation::value. Referenced by CrossProductEqVectors(), DotProductEqVectors(), and SHTransformProduct().
Removes a variable from an equation converting it into a constant. Note, that variables are indexed and that removing a variable shifts down the index of variables with index above the removed variable.
Definition at line 461 of file equation.c. References AddCt2LinearConstraint(), DeleteLinearConstraint(), InitLinearConstraint(), and ReplaceVariableInEquation(). Referenced by RemoveEquationsWithVar().
Replaces a variable from an equation converting it to a linear combination of variables. Note, that variables are indexed and that removing a variable shifts down the index of variables with index above the removed variable.
Definition at line 481 of file equation.c. References AddCt2Monomial(), AddMonomial(), AddVariable2Monomial(), Tequation::cmp, CopyEquation(), CopyMonomial(), DeleteEquation(), DeleteMonomial(), EQU, Error(), FixVariableInMonomial(), GEQ, GetEquationCmp(), GetEquationType(), GetEquationValue(), GetLinearConstraintCoefficient(), GetLinearConstraintError(), GetLinearConstraintVariable(), GetMonomialVariables(), GetNumTermsInLinearConstraint(), GetPlaceinSet(), GetVariablePowerN(), InitEquation(), IntervalCenter(), IntervalSize(), LEQ, Tequation::monomials, NFUN, Tequation::nMonomials, NO_UINT, NormalizeEquation(), Tequation::polynomial, PolynomialMonomial(), SetEquationCmp(), SetEquationType(), SetEquationValue(), ShiftVarIndexes(), TRUE, Tequation::value, VariableSetSize(), and ZERO. Referenced by FixVariableInEquation(), and ReplaceVariableInEquations().
Scales the equation by a constant factor. Only equalities are scaled and if the scale factor is 0 this function triggers an error.
Definition at line 652 of file equation.c. References AddCt2Monomial(), Tequation::cmp, EQU, Error(), Tequation::monomials, Tequation::nMonomials, Tequation::value, and ZERO. Referenced by CrossProductVectorEqVector(), DotProductVectorEqVector(), and ScaleEqVector().
Scales the equation by a variable factor. Only equalities are scaled.
Definition at line 669 of file equation.c. References AddCt2Monomial(), AddMonomial(), AddVariable2Monomial(), Tequation::cmp, DeleteMonomial(), EQU, Error(), FALSE, GetMonomialVariables(), InitMonomial(), Tequation::monomials, NFUN, Tequation::nMonomials, ResetVarSet(), UnionVarSet(), Tequation::value, and Tequation::vars. Referenced by AddJacobianEquationsInt(), GetSCpSystem(), and VarScaleEqVector().
Simple form of normalization to avoid numerical inestabilities. If all monomials have the same ct (up to ZERO) we make them all equal to one. This helps in many cases when we replace variables to avoid transforming, for instance, a circle equation into a scaled circle equation (that is not identified as a circle!)
Definition at line 703 of file equation.c. References AddCt2Monomial(), Tequation::cmp, EQU, GetMonomialCt(), Tequation::monomials, Tequation::nMonomials, PurgeEquation(), SetMonomialCt(), TRUE, Tequation::value, and ZERO. Referenced by AddEquation(), and ReplaceVariableInEquation().
Evaluates each one of the monomials in the equation and moves those evaluating to inf to the right hand side of the equation. Note that this can transform EQU to LEQ or GEQ. In the extreme case, the right hand side of the equation becomes unbounded (-inf,inf). In this case the equation does not constrain anything.
Definition at line 752 of file equation.c. References AddMonomial(), Tequation::cmp, EvaluateMonomialInt(), FALSE, GEQ, INF, InitEquation(), IntervalOffset(), IntervalSize(), IntervalSubstract(), LEQ, LowerLimit(), Tequation::monomials, NewInterval(), Tequation::nMonomials, PrintInterval(), TRUE, Tequation::type, UpperLimit(), and Tequation::value. Referenced by AddEquation2Simplex().
Checks if a given variable can be remove from the system and replaced by a linear combination of the surving variables. The output variables (v and lc) are only initilized if some simplification is possible (i.e., if the return is TRUE).
Definition at line 840 of file equation.c. References AddCt2LinearConstraint(), AddTerm2LinearConstraint(), Tequation::cmp, EQU, FALSE, GetBoxInterval(), GetEquationOrder(), GetMonomialCt(), GetMonomialVariables(), GetVariableN(), INF, InitLinearConstraint(), InvertLinearConstraint(), LowerLimit(), MAX_TERMS_SIMP, Tequation::monomials, Tequation::nMonomials, NO_UINT, Tequation::polynomial, ScaleLinearConstraint(), TRUE, UpperLimit(), Tequation::value, VariableSetSize(), and Tequation::vars. Referenced by CSRemoveLCVars().
Sets a new relational operator for the equation.
Definition at line 1018 of file equation.c. References Tequation::cmp, EQU, Error(), GEQ, and LEQ. Referenced by AddJacobianEquationsInt(), AddTerm2SearchCriterion(), AdjustBioWorldGeometry(), DummifyAndAddEquation(), GenerateCrossProductEquations(), GenerateDotProductEquation(), GenerateGeneralNormEquation(), GenerateJointEquations(), GenerateJointRangeEquations(), GenerateJointRangeSingularityEquations(), GenerateLinkRotQLinks(), GenerateScaledParabolaEquation(), GenerateScaledSaddleEquation(), GenerateTransEquationsFromBranch(), GetSCpSystem(), ReplaceVariableInEquation(), and SHTransformInit().
Sets a new type for the equation.
Definition at line 1013 of file equation.c. References Tequation::type. Referenced by AddJacobianEquationsInt(), AdjustBioWorldGeometry(), DummifyAndAddEquation(), GenerateCrossProductEquations(), GenerateDotProductEquation(), GenerateEquationsFromBranch(), GenerateGeneralNormEquation(), GenerateJointEquations(), GenerateJointRangeEquations(), GenerateJointRangeSingularityEquations(), GenerateLinkRotQLinks(), GenerateScaledParabolaEquation(), GenerateScaledSaddleEquation(), GenerateTransEquationsFromBranch(), GenerateWorldSingularityEquations(), GetSCpSystem(), ReplaceVariableInEquation(), and SHTransformInit().
Sets a new rigth-hand value for the equation.
Definition at line 1026 of file equation.c. References Tequation::value. Referenced by AccumulateVector2EqVector(), AdjustBioWorldGeometry(), DummifyAndAddEquation(), EqVectorFromVector(), GenerateCrossProductEquations(), GenerateDotProductEquation(), GenerateGeneralNormEquation(), GenerateJointEquations(), GenerateJointRangeEquations(), GenerateJointRangeSingularityEquations(), GenerateLinkRotQLinks(), GenerateScaledParabolaEquation(), GenerateScaledSaddleEquation(), ReplaceVariableInEquation(), SHTransformFromEqVectors(), SHTransformIdentity(), SHTransformInverse(), SHTransformRx(), SHTransformRy(), SHTransformRz(), SHTransformTx(), SHTransformTxyz(), SHTransformTy(), SHTransformTz(), SHTransformVarRx(), SHTransformVarRy(), and SHTransformVarRz(). Identify empty equations: equatoins with no monomias and with left value 0 (i.e., basically a 0=0 equation).
Definition at line 1031 of file equation.c. References Tequation::nMonomials, Tequation::value, and ZERO. Referenced by CacheScalarEQUInfo(). Identify linear equations.
Definition at line 1036 of file equation.c. References CtMonomial(), LinearMonomial(), Tequation::monomials, and Tequation::polynomial. Referenced by DummifyAndAddEquation(), and SetEquationInfo(). Identify bilinear equations.
Definition at line 1049 of file equation.c. References BilinearMonomial(), CtMonomial(), LinearMonomial(), Tequation::monomials, Tequation::polynomial, and QuadraticMonomial(). Identify circle equations (with arbitrary radius).
Definition at line 1068 of file equation.c. References FALSE, GetMonomialCt(), Tequation::monomials, Tequation::nMonomials, Tequation::polynomial, QuadraticMonomial(), TRUE, and Tequation::value. Referenced by DummifyAndAddEquation(), and SetEquationInfo(). Identify sphere equations (with arbitrary radius).
Definition at line 1082 of file equation.c. References FALSE, GetMonomialCt(), Tequation::monomials, Tequation::nMonomials, Tequation::polynomial, QuadraticMonomial(), TRUE, and Tequation::value. Referenced by DummifyAndAddEquation(), and SetEquationInfo(). Identify scaled saddle equations, i.e., equations of the form
Definition at line 1096 of file equation.c. References BilinearMonomial(), Tequation::cmp, EQU, FALSE, GetMonomialCt(), LinearMonomial(), Tequation::monomials, Tequation::nMonomials, Tequation::polynomial, and TRUE. Referenced by DummifyAndAddEquation(), and SetEquationInfo(). Identify equations formed by a single bilineal monomial. These equations typically appear after simplifications or when including lineal combinations of Jacobian equations and its worth to dectect and linearize them in a special way. Single quadratic monimial equations
Definition at line 1109 of file equation.c. References BilinearMonomial(), Tequation::cmp, EQU, FALSE, GetMonomialCt(), Tequation::monomials, Tequation::nMonomials, Tequation::polynomial, and TRUE. Referenced by SetEquationInfo(). Identify parabola equations, i.e., equations of the form
Definition at line 1121 of file equation.c. References Tequation::cmp, EQU, FALSE, GetMonomialCt(), LinearMonomial(), Tequation::monomials, Tequation::nMonomials, Tequation::polynomial, QuadraticMonomial(), and TRUE. Referenced by DummifyAndAddEquation(), and SetEquationInfo(). Identify equations formed only by polynomial monomials (i.e. not including trionometric functions).
Definition at line 1134 of file equation.c. References Tequation::polynomial. Referenced by AddEquationInt(), and CropEquation().
Gets the type of relational operator of the equation.
Definition at line 1139 of file equation.c. References Tequation::cmp. Referenced by AddEquation(), AddEquation2Simplex(), AddEquationInt(), AddEquationNoSimp(), CacheScalarEQUInfo(), CropEquation(), DeriveEqualityEquations(), DummifyAndAddEquation(), EvaluateEqualityEquations(), EvaluateInequalityEquations(), EvaluateSubSetEqualityEquations(), GaussianElimination(), LinearizeCircleEquation(), LinearizeGeneralEquation(), LinearizeSphereEquation(), ReplaceVariableInEquation(), and SetEquationInfo().
Gets the equation type.
Definition at line 1144 of file equation.c. References Tequation::type. Referenced by AddEquation(), AddEquationInt(), AddEquationNoSimp(), DummifyAndAddEquation(), EvaluateEqualityEquations(), GaussianElimination(), GetEquationTypeN(), IsCoordEquation(), IsDummyEquation(), IsSystemEquation(), ReplaceVariableInEquation(), and UsedVarInNonDummyEquations().
Gets the right-hand value of the equation.
Definition at line 1149 of file equation.c. References Tequation::value. Referenced by AccumulateVector2EqVector(), AddEquation2Simplex(), CropEquation(), DummifyAndAddEquation(), ErrorDueToVariable(), EvaluateEqMin(), EvaluateEqVectorInt(), EvaluateInequalityEquations(), GetFirstOrderApproximationToEquation(), LinearizeBilinealMonomialEquation(), LinearizeCircleEquation(), LinearizeSphereEquation(), ReplaceVariableInEquation(), and SetEquationInfo(). Returns the right-hand side of the equation in the form of an interval. For EQU equations this is [value,value], for LEQ is [-inf,value], and for GEQ is [value,inf].
Definition at line 1154 of file equation.c. References Tequation::cmp, EQU, Error(), GEQ, INF, LEQ, NewInterval(), NOCMP, and Tequation::value. Referenced by CropEquation().
Gets the equation order: 1 for lineal, 2 for bilinear and quadratic.
Definition at line 1173 of file equation.c. References Tequation::order. Referenced by CmpEquations(), DummifyAndAddEquation(), IsSimplificable(), and LinearEquation2LinearConstraint().
Gets the set of variables equation used in the equation. Note, we return a pointer to the interval equation structures so be careful what you do with the pointer.
Definition at line 1178 of file equation.c. References Tequation::vars. Referenced by AddEquation2Simplex(), CropEquation(), CSRemoveUnusedVars(), DummifyAndAddEquation(), ErrorDueToVariable(), GetEquationNumVariables(), GetFirstOrderApproximationToEquation(), LinearizeCircleEquation(), LinearizeGeneralEquation(), LinearizeGeneralEquationInt(), LinearizeSphereEquation(), RemoveEquationsWithVar(), SetEquationInfo(), UpdateSplitWeight(), UsedVarInEquations(), and UsedVarInNonDummyEquations().
Gets the number of variables equation used in the equation.
Definition at line 1183 of file equation.c. References GetEquationVariables(), and VariableSetSize(). Referenced by GaussianElimination(). Returns 1 if eq1<eq2, 0 if eq1=eq2 or 2 if eq1>eq2. Equations are sorted according to
Definition at line 1188 of file equation.c. References Tequation::cmp, CmpMonomial(), GetEquationOrder(), Tequation::monomials, Tequation::nMonomials, Tequation::polynomial, Tequation::type, and Tequation::value. Referenced by AddEquation(), and HasEquation(). Adds a new scaled monomial to the equation. When the scale factor (sc) is 1 this is exactly the same as AddMonomial.
Definition at line 1263 of file equation.c. References AddCt2Monomial(), CmpMonomial(), CopyMonomial(), CtMonomial(), DeleteMonomial(), EmptyMonomial(), Error(), FALSE, FindMonomial(), GetMonomialCt(), GetMonomialVariables(), Tequation::maxMonomials, MEM_DUP, MonomialOrder(), Tequation::monomials, NEW, Tequation::nMonomials, NO_UINT, Tequation::order, Tequation::polynomial, PolynomialMonomial(), ResetVarSet(), SetMonomialCt(), TRUE, UnionVarSet(), Tequation::value, Tequation::vars, and ZERO. Referenced by AccumulateEquations(), and AddMonomial(). Adds a new monomial to the equation.
Definition at line 1356 of file equation.c. References AddScaledMonomial(). Referenced by AddTerm2SearchCriterion(), AdjustBioWorldGeometry(), ApplyLinkRotFLinks(), ApplyLinkRotLinks(), ApplyLinkRotQLinks(), CleanInfEquation(), CopyEquation(), DeriveEquation(), DummifyAndAddEquation(), EquationFromLinearConstraint(), EquationFromLinearConstraintProduct(), GenerateCrossProductEquations(), GenerateDotProductEquation(), GenerateEquationsFromBranch(), GenerateGeneralNormEquation(), GenerateJointEquations(), GenerateJointEquationsInBranch(), GenerateJointRangeEquations(), GenerateJointRangeSingularityEquations(), GenerateLinkRotQLinks(), GenerateScaledParabolaEquation(), GenerateScaledSaddleEquation(), GenerateWorldSingularityEquations(), GetSCpSystem(), ProductEquations(), PurgeEquation(), ReplaceVariableInEquation(), RewriteEquation2Orig(), RewriteEquation2Simp(), SHTransformVarDisplacementAlongVector(), SHTransformVarRx(), SHTransformVarRy(), SHTransformVarRz(), SHTransformVarTx(), SHTransformVarTxyz(), SHTransformVarTy(), SHTransformVarTz(), Var2AccumulateVector2EqVector(), VarAccumulateEquations(), VarAccumulateVector2EqVector(), and VarScaleEquation().
Generates a parabola equation vx^2-vy=0.
Definition at line 1361 of file equation.c. References GenerateScaledParabolaEquation().
Generates a parabola equation s*vx^2-vy=0.
Definition at line 1366 of file equation.c. References AddCt2Monomial(), AddMonomial(), AddVariable2Monomial(), DeleteMonomial(), DUMMY_EQ, EQU, Error(), InitEquation(), InitMonomial(), NFUN, ResetMonomial(), SetEquationCmp(), SetEquationType(), and SetEquationValue(). Referenced by GenerateParabolaEquation(), and GenerateScaledSaddleEquation().
Generates a saddle equation vx*vy-vz=0. If vx is the same as vy a parabola equation is generated.
Definition at line 1392 of file equation.c. References GenerateScaledSaddleEquation(). Referenced by GenerateJointEquations(), and GenerateLinkRotQLinks().
Generates a saddle equation s*vx*vy-vz=0. If vx is the same as vy a scaled parabola equation is generated.
Definition at line 1398 of file equation.c. References AddCt2Monomial(), AddMonomial(), AddVariable2Monomial(), DeleteMonomial(), DUMMY_EQ, EQU, Error(), GenerateScaledParabolaEquation(), InitEquation(), InitMonomial(), NFUN, ResetMonomial(), SetEquationCmp(), SetEquationType(), and SetEquationValue(). Referenced by GenerateLinkRotLinks(), and GenerateSaddleEquation().
Generates an equation that is the norm of a vector with nv variables n. Thus, the equation created is ![]()
Definition at line 1443 of file equation.c. References AddMonomial(), AddVariable2Monomial(), DeleteMonomial(), EQU, InitEquation(), InitMonomial(), NFUN, ResetMonomial(), SetEquationCmp(), SetEquationType(), SetEquationValue(), and SYSTEM_EQ. Referenced by AddJacobianEquationsInt(), GenerateNormEquation(), and GetSCpSystem().
This is a special case of GenerateGeneralNormEquation where the vector has only 3 variables.
Definition at line 1431 of file equation.c. References GenerateGeneralNormEquation(). Referenced by AdjustBioWorldGeometry(), GenerateJointEquations(), GenerateLinkRotFLinks(), and GenerateLinkRotLinks().
Generates the three equations of the cross product of two unitary vectors that give as a result a third vector (orthogonal to the two operated vectors) scaled by the sinus of the angle between these two vectors.
Definition at line 1464 of file equation.c. References AddCt2Monomial(), AddMonomial(), AddVariable2Monomial(), DeleteMonomial(), EQU, InitEquation(), InitMonomial(), NFUN, NO_UINT, ResetMonomial(), SetEquationCmp(), SetEquationType(), SetEquationValue(), and SYSTEM_EQ. Referenced by GenerateLinkRotFLinks().
Generates the equation corresponding to the dot product of two unitary vectors that give as a result the cosinus of the angle between these two vectors.
Definition at line 1526 of file equation.c. References AddCt2Monomial(), AddMonomial(), AddVariable2Monomial(), DeleteMonomial(), EQU, InitEquation(), InitMonomial(), NFUN, NO_UINT, ResetMonomial(), SetEquationCmp(), SetEquationType(), SetEquationValue(), and SYSTEM_EQ. Referenced by AdjustBioWorldGeometry(), GenerateJointEquations(), GenerateJointRangeEquations(), GenerateLinkRotFLinks(), and GenerateLinkRotLinks(). Searches for a given monomial in the equation.
Definition at line 1561 of file equation.c. References CmpVarSet(), FALSE, GetMonomialVariables(), Tequation::monomials, NO_UINT, and TRUE. Referenced by AddScaledMonomial(), and GaussianElimination(). Gets a monomial from an equation.
Definition at line 1584 of file equation.c. References Tequation::monomials. Referenced by CropEquation(), DummifyAndAddEquation(), GaussianElimination(), LinearizeBilinealMonomialEquation(), LinearizeParabolaEquation(), LinearizeSaddleEquation(), and SetEquationInfo().
Returns the number of monomials in an equation.
Definition at line 1592 of file equation.c. References Tequation::nMonomials. Referenced by AddEquation(), CropEquation(), DummifyAndAddEquation(), GaussianElimination(), SetEquationInfo(), and UpdateCuikSystem().
Converts a linear equation into a linear constraint. A linear constraint is just a particular case of equation. We implemented the linear constraints as a different type just for convenience (i.e., to facilitate the simplex implementation). If the input equation is not linear, the output is empty. To approximate a general equation with a linear constraint use GetFirstOrderApproximationToEquation.
Definition at line 1597 of file equation.c. References AddCt2LinearConstraint(), AddTerm2LinearConstraint(), GetEquationOrder(), GetMonomialCt(), GetMonomialVariables(), GetVariableN(), InitLinearConstraint(), Tequation::monomials, Tequation::nMonomials, Tequation::polynomial, and Tequation::value.
Evaluates an equation in a given point including its right-hand side. This is like a combination of EvaluateEquation and GetEquationValue into a single function.
Definition at line 1615 of file equation.c. References Tequation::cmp, Error(), EvaluateMonomial(), Tequation::monomials, Tequation::nMonomials, NOCMP, and Tequation::value. Referenced by EvaluateCSCost(), EvaluateEqMin(), EvaluateEqualityEquations(), EvaluateEqualitySparseEquations(), EvaluateEqVector(), EvaluateSubSetEqualityEquations(), EvaluateSubSetEqualitySparseEquations(), and SHTransformEvaluate().
Evaluates an equation in a given point. NOTE: The right-hand side value of the equation is not used in the evaluation.
Definition at line 1633 of file equation.c. References Tequation::cmp, Error(), EvaluateMonomial(), Tequation::monomials, Tequation::nMonomials, and NOCMP. Referenced by EvaluateInequalityEquations(). Evaluates an equation for a given ranges of the variables using interval arithmetics.
Definition at line 1649 of file equation.c. References Tequation::cmp, Error(), EvaluateMonomialInt(), IntervalAdd(), Tequation::monomials, NewInterval(), Tequation::nMonomials, and NOCMP. Referenced by AddEquation2Simplex(), CropEquation(), ErrorDueToVariable(), EvaluateEqMin(), EvaluateEqVectorInt(), and GetFirstOrderApproximationToEquation(). Derives an equation with respect to a given variable.
Definition at line 1665 of file equation.c. References AddMonomial(), Tequation::cmp, DeleteMonomial(), DERIVED_EQ, DeriveMonomial(), EQU, InitVarSet(), Tequation::maxMonomials, Tequation::monomials, NEW, Tequation::nMonomials, Tequation::order, Tequation::polynomial, TRUE, Tequation::type, Tequation::value, and Tequation::vars. Referenced by DeriveEqualityEquations(), and SetEquationInfo().
Writes an equation to a given stream as a sequence of monomials, i.e., without the equality and with the right-hand side at the left side. This only works if the equation is a equality. Inequalities are always printed as a normal equations
Definition at line 1692 of file equation.c. References Tequation::cmp, EQU, Tequation::monomials, Tequation::nMonomials, PrintEquation(), PrintMonomial(), Tequation::value, and ZERO. Referenced by PrintCuikSystem(), PrintCuikSystemWithSimplification(), and SHTransformPrint().
Writes an equation to a given stream.
Definition at line 1714 of file equation.c. References Tequation::cmp, EQU, Error(), GEQ, LEQ, Tequation::monomials, Tequation::nMonomials, NOCMP, PrintMonomial(), and Tequation::value. Referenced by AddEquation2Simplex(), AddSimplifiedJacobianEquations(), CropEquation(), GaussianElimination(), PrintEquations(), and PrintMonomials().
Deletes the information stored in the equation and frees the allocated memory space.
Definition at line 1748 of file equation.c. References DeleteVarSet(), Tequation::monomials, ResetEquationMonomials(), and Tequation::vars. Referenced by AddEquation2Simplex(), AddJacobianEquationsInt(), AddTerm2SearchCriterion(), AdjustBioWorldGeometry(), ApplyLinkRotVar(), CrossProductEqVectors(), DeleteCuikSystem(), DeleteEquationInfo(), DeleteEqVector(), DeriveEqualityEquations(), DotProductEqVectors(), DummifyAndAddEquation(), GaussianElimination(), GenerateEquationsFromBranch(), GenerateJointEquations(), GenerateJointRangeEquations(), GenerateJointRangeSingularityEquations(), GenerateLinkRotFLinks(), GenerateLinkRotLinks(), GenerateLinkRotQLinks(), GenerateWorldEquations(), GenerateWorldSingularityEquations(), GetSCpSystem(), ProductEquations(), PurgeEquation(), ReplaceVariableInEquation(), RewriteEquation2Orig(), RewriteEquation2Simp(), SetCSSearchMode(), SHTransformDelete(), SHTransformInverse(), SHTransformProduct(), and UnUpdateCuikSystem(). |
Follow us!