use math functions in view code, no functional changes.
authorCampbell Barton <ideasman42@gmail.com>
Thu, 25 Feb 2010 20:26:38 +0000 (20:26 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Thu, 25 Feb 2010 20:26:38 +0000 (20:26 +0000)
source/blender/editors/space_view3d/view3d_edit.c
source/blender/editors/space_view3d/view3d_view.c

index 8bc9ec386d0cf0f7973fd98fe559985e06365ff4..27fe63ba65781350efa347f559f4267fcd9ea059 100644 (file)
@@ -110,9 +110,7 @@ static void view3d_boxview_clip(ScrArea *sa)
 
                                        if(ar->winx>ar->winy) y1= ar->winy*rv3d->dist/ar->winx;
                                        else y1= rv3d->dist;
-
-                                       ofs[0]= rv3d->ofs[0];
-                                       ofs[1]= rv3d->ofs[1];
+                                       copy_v2_v2(ofs, rv3d->ofs);
                                }
                                else if(ELEM(rv3d->view, RV3D_VIEW_FRONT, RV3D_VIEW_BACK)) {
                                        ofs[2]= rv3d->ofs[2];
@@ -372,8 +370,7 @@ static void viewops_data_create(bContext *C, wmOperator *op, wmEvent *event)
                                closest_to_line_v3(dvec, vod->dyn_ofs, my_pivot, my_origin);
                                vod->dist0 = rv3d->dist = len_v3v3(my_pivot, dvec);
 
-                               negate_v3(dvec);
-                               VECCOPY(rv3d->ofs, dvec);
+                               negate_v3_v3(rv3d->ofs, dvec);
                        }
                        negate_v3(vod->dyn_ofs);
                        VECCOPY(vod->ofs, rv3d->ofs);
@@ -548,11 +545,8 @@ static void viewrotate_apply(ViewOpsData *vod, int x, int y)
                        * dragged. */
                phi = si * M_PI / 2.0;
 
-               si= sin(phi);
                q1[0]= cos(phi);
-               q1[1]*= si;
-               q1[2]*= si;
-               q1[3]*= si;
+               mul_v3_fl(q1+1, sin(phi));
                mul_qt_qtqt(rv3d->viewquat, q1, vod->oldquat);
 
                if (vod->use_dyn_ofs) {
@@ -570,7 +564,7 @@ static void viewrotate_apply(ViewOpsData *vod, int x, int y)
        }
        else {
                /* New turntable view code by John Aughey */
-               float si, phi, q1[4];
+               float phi, q1[4];
                float m[3][3];
                float m_inv[3][3];
                float xvec[3] = {1,0,0};
@@ -590,11 +584,8 @@ static void viewrotate_apply(ViewOpsData *vod, int x, int y)
 
                /* Perform the up/down rotation */
                phi = sensitivity * -(y - vod->oldy);
-               si = sin(phi);
                q1[0] = cos(phi);
-               q1[1] = si * xvec[0];
-               q1[2] = si * xvec[1];
-               q1[3] = si * xvec[2];
+               mul_v3_v3fl(q1+1, xvec, sin(phi));
                mul_qt_qtqt(rv3d->viewquat, rv3d->viewquat, q1);
 
                if (vod->use_dyn_ofs) {
@@ -635,12 +626,10 @@ static void viewrotate_apply(ViewOpsData *vod, int x, int y)
 
                        if ((dot_v3v3(snapmat[0], viewmat[0]) > thres) &&
                                (dot_v3v3(snapmat[1], viewmat[1]) > thres) &&
-                               (dot_v3v3(snapmat[2], viewmat[2]) > thres)){
-
-                               QUATCOPY(rv3d->viewquat, snapquats[i]);
-
-                               rv3d->view = view;
-
+                               (dot_v3v3(snapmat[2], viewmat[2]) > thres)
+                       ) {
+                               copy_qt_qt(rv3d->viewquat, snapquats[i]);
+                               rv3d->view= view;
                                break;
                        }
                }
@@ -969,18 +958,15 @@ static void view_zoom_mouseloc(ARegion *ar, float dfac, int mx, int my)
                vb[0] = ar->winx;
                vb[1] = ar->winy;
 
-               tpos[0] = -rv3d->ofs[0];
-               tpos[1] = -rv3d->ofs[1];
-               tpos[2] = -rv3d->ofs[2];
+               negate_v3_v3(tpos, rv3d->ofs);
 
                /* Project cursor position into 3D space */
                initgrabz(rv3d, tpos[0], tpos[1], tpos[2]);
                window_to_3d_delta(ar, dvec, mouseloc[0]-vb[0]/2, mouseloc[1]-vb[1]/2);
 
                /* Calculate view target position for dolly */
-               tvec[0] = -(tpos[0] + dvec[0]);
-               tvec[1] = -(tpos[1] + dvec[1]);
-               tvec[2] = -(tpos[2] + dvec[2]);
+               add_v3_v3v3(tvec, tpos, dvec);
+               negate_v3(tvec);
 
                /* Offset to target position and dolly */
                new_dist = rv3d->dist * dfac;
@@ -989,11 +975,7 @@ static void view_zoom_mouseloc(ARegion *ar, float dfac, int mx, int my)
                rv3d->dist = new_dist;
 
                /* Calculate final offset */
-               dvec[0] = tvec[0] + dvec[0] * dfac;
-               dvec[1] = tvec[1] + dvec[1] * dfac;
-               dvec[2] = tvec[2] + dvec[2] * dfac;
-
-               VECCOPY(rv3d->ofs, dvec);
+               madd_v3_v3v3fl(rv3d->ofs, tvec, dvec, dfac);
        } else {
                rv3d->dist *= dfac;
        }
@@ -1407,9 +1389,7 @@ static int viewselected_exec(bContext *C, wmOperator *op) /* like a localview wi
 
        if(ok==0) return OPERATOR_FINISHED;
 
-       afm[0]= (max[0]-min[0]);
-       afm[1]= (max[1]-min[1]);
-       afm[2]= (max[2]-min[2]);
+       sub_v3_v3v3(afm, max, min);
        size= MAX3(afm[0], afm[1], afm[2]);
 
        if(rv3d->persp==RV3D_ORTHO) {
@@ -1427,10 +1407,7 @@ static int viewselected_exec(bContext *C, wmOperator *op) /* like a localview wi
                }
        }
 
-       new_ofs[0]= -(min[0]+max[0])/2.0f;
-       new_ofs[1]= -(min[1]+max[1])/2.0f;
-       new_ofs[2]= -(min[2]+max[2])/2.0f;
-
+       madd_v3_v3v3fl(new_ofs, min, max, -0.5f);
        new_dist = size;
 
        /* correction for window aspect ratio */
@@ -1703,9 +1680,7 @@ static int view3d_zoom_border_exec(bContext *C, wmOperator *op)
                        new_ofs[2] = -p[2];
                } else {
                        /* We cant use the depth, fallback to the old way that dosnt set the center depth */
-                       new_ofs[0] = rv3d->ofs[0];
-                       new_ofs[1] = rv3d->ofs[1];
-                       new_ofs[2] = rv3d->ofs[2];
+                       copy_v3_v3(new_ofs, rv3d->ofs);
 
                        initgrabz(rv3d, -new_ofs[0], -new_ofs[1], -new_ofs[2]);
 
@@ -1979,7 +1954,7 @@ static EnumPropertyItem prop_view_orbit_items[] = {
 static int vieworbit_exec(bContext *C, wmOperator *op)
 {
        RegionView3D *rv3d= CTX_wm_region_view3d(C);
-       float phi, si, q1[4], new_quat[4];
+       float phi, q1[4], new_quat[4];
        int orbitdir;
 
        orbitdir = RNA_enum_get(op->ptr, "type");
@@ -1988,6 +1963,7 @@ static int vieworbit_exec(bContext *C, wmOperator *op)
 
                if(rv3d->persp != RV3D_CAMOB) {
                        if(orbitdir == V3D_VIEW_STEPLEFT || orbitdir == V3D_VIEW_STEPRIGHT) {
+                               float si;
                                /* z-axis */
                                phi= (float)(M_PI/360.0)*U.pad_rot_angle;
                                if(orbitdir == V3D_VIEW_STEPRIGHT) phi= -phi;
@@ -2005,11 +1981,8 @@ static int vieworbit_exec(bContext *C, wmOperator *op)
                                normalize_v3(q1+1);
                                phi= (float)(M_PI/360.0)*U.pad_rot_angle;
                                if(orbitdir == V3D_VIEW_STEPDOWN) phi= -phi;
-                               si= (float)sin(phi);
                                q1[0]= (float)cos(phi);
-                               q1[1]*= si;
-                               q1[2]*= si;
-                               q1[3]*= si;
+                               mul_v3_fl(q1+1, sin(phi));
                                mul_qt_qtqt(new_quat, rv3d->viewquat, q1);
                                rv3d->view= 0;
                        }
@@ -2812,7 +2785,7 @@ void viewmoveNDOF(Scene *scene, ARegion *ar, View3D *v3d, int mode)
        float xvec[3] = {1,0,0};
        float yvec[3] = {0,-1,0};
        float zvec[3] = {0,0,1};
-       float phi, si;
+       float phi;
        float q1[4];
        float obofs[3];
        float reverse;
@@ -2961,11 +2934,8 @@ void viewmoveNDOF(Scene *scene, ARegion *ar, View3D *v3d, int mode)
 
     /* Perform the up/down rotation */
     phi = sbadjust * rsens * /*0.5f * */ fval[3]; /* spin vertically half as fast as horizontally */
-    si = sin(phi);
     q1[0] = cos(phi);
-    q1[1] = si * xvec[0];
-    q1[2] = si * xvec[1];
-    q1[3] = si * xvec[2];
+    mul_v3_v3fl(q1+1, xvec, sin(phi));
     mul_qt_qtqt(rv3d->viewquat, rv3d->viewquat, q1);
 
     if (use_sel) {
index 09d8d79f8f5c4ebd435c7e39a5fde05ac12df26e..906f6e4da4179d08283b6eec9e4361abf29fd378 100644 (file)
@@ -404,13 +404,9 @@ static void setcameratoview3d(View3D *v3d, RegionView3D *rv3d, Object *ob)
 {
        float dvec[3];
        float mat3[3][3];
-       
-       dvec[0]= rv3d->dist*rv3d->viewinv[2][0];
-       dvec[1]= rv3d->dist*rv3d->viewinv[2][1];
-       dvec[2]= rv3d->dist*rv3d->viewinv[2][2];
-       
-       VECCOPY(ob->loc, dvec);
-       sub_v3_v3v3(ob->loc, ob->loc, rv3d->ofs);
+
+       mul_v3_v3fl(dvec, rv3d->viewinv[2], rv3d->dist);
+       sub_v3_v3v3(ob->loc, dvec, rv3d->ofs);
        rv3d->viewquat[0]= -rv3d->viewquat[0];
 
        // quat_to_eul( ob->rot,rv3d->viewquat); // in 2.4x for xyz eulers only
@@ -602,9 +598,7 @@ void viewvector(RegionView3D *rv3d, float coord[3], float vec[3])
                p2[3] = 1.0f;
                mul_m4_v4(rv3d->viewmat, p2);
 
-               p2[0] = 2.0f * p2[0];
-               p2[1] = 2.0f * p2[1];
-               p2[2] = 2.0f * p2[2];
+               mul_v3_fl(p2, 2.0f);
 
                mul_m4_v4(rv3d->viewinv, p2);
 
@@ -2612,10 +2606,9 @@ void view3d_align_axis_to_vector(View3D *v3d, RegionView3D *rv3d, int axisidx, f
        
        if(axisidx > 0) alignaxis[axisidx-1]= 1.0;
        else alignaxis[-axisidx-1]= -1.0;
-       
-       VECCOPY(norm, vec);
-       normalize_v3(norm);
-       
+
+       normalize_v3_v3(norm, vec);
+
        angle= (float)acos(dot_v3v3(alignaxis, norm));
        cross_v3_v3v3(axis, alignaxis, norm);
        axis_angle_to_quat( new_quat,axis, -angle);