Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2005-08-27 17:45:19 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2005-08-27 17:45:19 +0400
commitae9dcb3dc2f36f9ae6f2ca94dedc34c681b86045 (patch)
tree0abc008ccb3a92dc0b2f6fb633829a07cf5e02d5 /intern/moto
parentfa0bbaf380fb634cf3bd385737eef630a226633e (diff)
Update SConscript.
Fix some warnings. Merge with latest soc code. What changed in IK lib: Fully restructured, with components now as follows: - IK_Solver: C <=> C++ interface - IK_QSegment: base class for bone/segment with 0 to 3 DOF - IK_QTask: base class for a task (currently there's a position and a rotation task) - IK_QJacobian: the Jacobian matrix, with SVD decomposition, damping, etc - IK_QJacobianSolver: the iterative solver The exponential map parametrization is no longer used, instead we have now: - 3DOF and 2DOF XZ segments: directly update matrix with Rodrigues' formula - Other: Euler angles (no worries about singularities here) Computation of the Jacobian inverse has also changed: - The SVD algorithm is now based on LAPACK code, instead of NR, to avoid some problems with rounding errors. - When the problem is underconstrained (as is the case most of the time), the SVD is computed for the transpose of the Jacobian (faster). - A new damping algorithm called the Selectively Damped Least Squares is used, result in faster and more stable convergence. - Stiffness is implemented as if a weighted psuedo-inverse was used. Tree structure support. Rotation limits: - 3DOF and 2DOF XZ segments limits are based on a swing (direct axis-angle over XZ) and twist/roll (rotation over Y) decomposition. The swing region is an ellipse on a sphere. - Rotation limits are implemented using an inner clamping loop: as long as there is a violation, a violating DOF is clamped and removed from the Jacobian, and the solution is recomputed. Convergence checking is based now on the max norm of angle change, or the maximum number of iterations.
Diffstat (limited to 'intern/moto')
-rw-r--r--intern/moto/include/MT_Point3.h1
-rw-r--r--intern/moto/include/MT_Point3.inl5
2 files changed, 6 insertions, 0 deletions
diff --git a/intern/moto/include/MT_Point3.h b/intern/moto/include/MT_Point3.h
index 5e85dc596ab..372718af312 100644
--- a/intern/moto/include/MT_Point3.h
+++ b/intern/moto/include/MT_Point3.h
@@ -58,6 +58,7 @@ public:
MT_Point3& operator+=(const MT_Vector3& v);
MT_Point3& operator-=(const MT_Vector3& v);
MT_Point3& operator=(const MT_Vector3& v);
+ MT_Point3& operator=(const MT_Point3& v);
MT_Scalar distance(const MT_Point3& p) const;
MT_Scalar distance2(const MT_Point3& p) const;
diff --git a/intern/moto/include/MT_Point3.inl b/intern/moto/include/MT_Point3.inl
index e6ce4f9d9a3..081a8195694 100644
--- a/intern/moto/include/MT_Point3.inl
+++ b/intern/moto/include/MT_Point3.inl
@@ -15,6 +15,11 @@ GEN_INLINE MT_Point3& MT_Point3::operator=(const MT_Vector3& v) {
return *this;
}
+GEN_INLINE MT_Point3& MT_Point3::operator=(const MT_Point3& v) {
+ m_co[0] = v[0]; m_co[1] = v[1]; m_co[2] = v[2];
+ return *this;
+}
+
GEN_INLINE MT_Scalar MT_Point3::distance(const MT_Point3& p) const {
return (p - *this).length();
}