summaryrefslogtreecommitdiff
path: root/indra/newview/llmaniprotate.cpp
diff options
context:
space:
mode:
authorOz Linden <oz@lindenlab.com>2014-12-15 12:34:18 -0500
committerOz Linden <oz@lindenlab.com>2014-12-15 12:34:18 -0500
commitdab5acd972c05b4c9d23d5dfb46afe9eff6c9567 (patch)
tree6f3b1ca79eefbc2b232a5da809359eefcf59ecfb /indra/newview/llmaniprotate.cpp
parenteb5c0dd32a7f4e4a603fe88cfa5f18c30725d11a (diff)
parent6d48db868f7459fcf5f0e89d830a844e409d4163 (diff)
merge changes for 3.7.22-release
Diffstat (limited to 'indra/newview/llmaniprotate.cpp')
-rwxr-xr-xindra/newview/llmaniprotate.cpp10
1 files changed, 5 insertions, 5 deletions
diff --git a/indra/newview/llmaniprotate.cpp b/indra/newview/llmaniprotate.cpp
index 25d4c12b8d..f172aa0955 100755
--- a/indra/newview/llmaniprotate.cpp
+++ b/indra/newview/llmaniprotate.cpp
@@ -1240,10 +1240,10 @@ LLQuaternion LLManipRotate::dragUnconstrained( S32 x, S32 y )
F32 dist_from_sphere_center = sqrt(delta_x * delta_x + delta_y * delta_y);
LLVector3 axis = mMouseDown % mMouseCur;
+ F32 angle = atan2(sqrtf(axis * axis), mMouseDown * mMouseCur);
axis.normVec();
- F32 angle = acos(mMouseDown * mMouseCur);
LLQuaternion sphere_rot( angle, axis );
-
+
if (is_approx_zero(1.f - mMouseDown * mMouseCur))
{
return LLQuaternion::DEFAULT;
@@ -1636,9 +1636,9 @@ LLQuaternion LLManipRotate::dragConstrained( S32 x, S32 y )
mInSnapRegime = FALSE;
}
- angle = acos(mMouseCur * mMouseDown);
-
- F32 dir = (mMouseDown % mMouseCur) * constraint_axis; // cross product
+ LLVector3 cross_product = mMouseDown % mMouseCur;
+ angle = atan2(sqrtf(cross_product * cross_product), mMouseCur * mMouseDown);
+ F32 dir = cross_product * constraint_axis; // cross product
if( dir < 0.f )
{
angle *= -1.f;