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:
authorJoshua Leung <aligorith@gmail.com>2010-02-06 01:03:19 +0300
committerJoshua Leung <aligorith@gmail.com>2010-02-06 01:03:19 +0300
commit29a6465ed4e08e4bdf1bc53bace2be1774d6fd38 (patch)
treee5e8a58649894056d789698998859af41bead58d /intern/iksolver
parent5affc83eb2ab59b5946a34a7ed40c014861599c6 (diff)
Bugfix #20971: IK Joints Inexplicably Stiff In Recent Blender 2.5 Builds
- IK-Solver interfaces were still converting units from degrees to radians. Made these all use radians now. - Tried to fix the DOF limits drawing. This is still not totally functional again yet, but at least there are visible lines now.
Diffstat (limited to 'intern/iksolver')
-rw-r--r--intern/iksolver/intern/IK_QSegment.cpp40
1 files changed, 20 insertions, 20 deletions
diff --git a/intern/iksolver/intern/IK_QSegment.cpp b/intern/iksolver/intern/IK_QSegment.cpp
index c52f1e596b9..b84f11a03e2 100644
--- a/intern/iksolver/intern/IK_QSegment.cpp
+++ b/intern/iksolver/intern/IK_QSegment.cpp
@@ -368,21 +368,21 @@ void IK_QSphericalSegment::SetLimit(int axis, MT_Scalar lmin, MT_Scalar lmax)
return;
if (axis == 1) {
- lmin = MT_clamp(lmin, -180, 180);
- lmax = MT_clamp(lmax, -180, 180);
+ lmin = MT_clamp(lmin, -M_PI, M_PI);
+ lmax = MT_clamp(lmax, -M_PI, M_PI);
- m_min_y = MT_radians(lmin);
- m_max_y = MT_radians(lmax);
+ m_min_y = lmin;
+ m_max_y = lmax;
m_limit_y = true;
}
else {
// clamp and convert to axis angle parameters
- lmin = MT_clamp(lmin, -180, 180);
- lmax = MT_clamp(lmax, -180, 180);
+ lmin = MT_clamp(lmin, -M_PI, M_PI);
+ lmax = MT_clamp(lmax, -M_PI, M_PI);
- lmin = sin(MT_radians(lmin)*0.5);
- lmax = sin(MT_radians(lmax)*0.5);
+ lmin = sin(lmin*0.5);
+ lmax = sin(lmax*0.5);
if (axis == 0) {
m_min[0] = -lmax;
@@ -611,11 +611,11 @@ void IK_QRevoluteSegment::SetLimit(int axis, MT_Scalar lmin, MT_Scalar lmax)
return;
// clamp and convert to axis angle parameters
- lmin = MT_clamp(lmin, -180, 180);
- lmax = MT_clamp(lmax, -180, 180);
+ lmin = MT_clamp(lmin, -M_PI, M_PI);
+ lmax = MT_clamp(lmax, -M_PI, M_PI);
- m_min = MT_radians(lmin);
- m_max = MT_radians(lmax);
+ m_min = lmin;
+ m_max = lmax;
m_limit = true;
}
@@ -750,11 +750,11 @@ void IK_QSwingSegment::SetLimit(int axis, MT_Scalar lmin, MT_Scalar lmax)
return;
// clamp and convert to axis angle parameters
- lmin = MT_clamp(lmin, -180, 180);
- lmax = MT_clamp(lmax, -180, 180);
+ lmin = MT_clamp(lmin, -M_PI, M_PI);
+ lmax = MT_clamp(lmax, -M_PI, M_PI);
- lmin = sin(MT_radians(lmin)*0.5);
- lmax = sin(MT_radians(lmax)*0.5);
+ lmin = sin(lmin*0.5);
+ lmax = sin(lmax*0.5);
// put center of ellispe in the middle between min and max
MT_Scalar offset = 0.5*(lmin + lmax);
@@ -896,11 +896,11 @@ void IK_QElbowSegment::SetLimit(int axis, MT_Scalar lmin, MT_Scalar lmax)
return;
// clamp and convert to axis angle parameters
- lmin = MT_clamp(lmin, -180, 180);
- lmax = MT_clamp(lmax, -180, 180);
+ lmin = MT_clamp(lmin, -M_PI, M_PI);
+ lmax = MT_clamp(lmax, -M_PI, M_PI);
- lmin = MT_radians(lmin);
- lmax = MT_radians(lmax);
+ lmin = lmin;
+ lmax = lmax;
if (axis == 1) {
m_min_twist = lmin;