[Bf-blender-cvs] [e418c858ab8] master: 3D View: use shortest angle between quaternions

Campbell Barton noreply at git.blender.org
Tue Dec 19 04:05:57 CET 2017


Commit: e418c858ab85a28f312ffc8a3b2f625438558472
Author: Campbell Barton
Date:   Tue Dec 19 14:05:54 2017 +1100
Branches: master
https://developer.blender.org/rBe418c858ab85a28f312ffc8a3b2f625438558472

3D View: use shortest angle between quaternions

Gave incorrect smoothview speed changing between some axis and
axis locking.

===================================================================

M	source/blender/editors/space_view3d/view3d_view.c

===================================================================

diff --git a/source/blender/editors/space_view3d/view3d_view.c b/source/blender/editors/space_view3d/view3d_view.c
index 0bccab626e6..85d21a13add 100644
--- a/source/blender/editors/space_view3d/view3d_view.c
+++ b/source/blender/editors/space_view3d/view3d_view.c
@@ -271,7 +271,7 @@ void ED_view3d_smooth_view_ex(
 			 * this means small rotations wont lag */
 			if (sview->quat && !sview->ofs && !sview->dist) {
 				/* scale the time allowed by the rotation */
-				sms.time_allowed *= (double)angle_normalized_qtqt(sms.dst.quat, sms.src.quat) / M_PI; /* 180deg == 1.0 */
+				sms.time_allowed *= (double)fabsf(angle_signed_normalized_qtqt(sms.dst.quat, sms.src.quat)) / M_PI; /* 180deg == 1.0 */
 			}
 
 			/* ensure it shows correct */
@@ -1076,7 +1076,7 @@ char ED_view3d_quat_to_axis_view(const float quat[4], const float epsilon)
 	char view;
 
 	for (view = RV3D_VIEW_FRONT; view <= RV3D_VIEW_BOTTOM; view++) {
-		if (angle_qtqt(quat, view3d_quat_axis[view - RV3D_VIEW_FRONT]) < epsilon) {
+		if (fabsf(angle_signed_qtqt(quat, view3d_quat_axis[view - RV3D_VIEW_FRONT])) < epsilon) {
 			return view;
 		}
 	}



More information about the Bf-blender-cvs mailing list