Cleanup: trackball logic
authorCampbell Barton <ideasman42@gmail.com>
Sat, 17 Dec 2016 08:12:07 +0000 (19:12 +1100)
committerCampbell Barton <ideasman42@gmail.com>
Sat, 17 Dec 2016 08:14:02 +0000 (19:14 +1100)
Used SQRT2 and SQRT1_2 to calculate the same value,
harmless but a little confusing, set once and check instead.

source/blender/editors/space_view3d/view3d_edit.c

index eb4d1b3819bdb0d2f790c899a13255d83fcd8460..620bbf03f32bca3496a9cc67a52dc704af9ff294 100644 (file)
@@ -566,22 +566,20 @@ typedef struct ViewOpsData {
 
 static void calctrackballvec(const rcti *rect, int mx, int my, float vec[3])
 {
-       float x, y, radius, d, z, t;
-
-       radius = TRACKBALLSIZE;
+       const float radius = TRACKBALLSIZE;
+       const float t = radius / (float)M_SQRT2;
+       float x, y, z, d;
 
        /* normalize x and y */
        x = BLI_rcti_cent_x(rect) - mx;
        x /= (float)(BLI_rcti_size_x(rect) / 4);
        y = BLI_rcti_cent_y(rect) - my;
        y /= (float)(BLI_rcti_size_y(rect) / 2);
-
        d = sqrtf(x * x + y * y);
-       if (d < radius * (float)M_SQRT1_2) { /* Inside sphere */
+       if (d < t) { /* Inside sphere */
                z = sqrtf(radius * radius - d * d);
        }
        else { /* On hyperbola */
-               t = radius / (float)M_SQRT2;
                z = t * t / d;
        }