svn merge ^/trunk/blender -r41230:41266
[blender.git] / intern / itasc / WDLSSolver.cpp
index d03c38396c7611b7bc5633cf1eff4b78c44dccc4..a4146149d3080a3772475c42dbd50d2e2add96fe 100644 (file)
@@ -65,10 +65,10 @@ bool WDLSSolver::solve(const e_matrix& A, const e_vector& Wy, const e_vector& yd
     if(ret<0)
         return false;
 
-    m_WqV.noalias() = Wq*m_V;
+    m_WqV = (Wq*m_V).lazy();
 
     //Wy*ydot
-       m_Wy_ydot = Wy.array() * ydot.array();
+       m_Wy_ydot = Wy.cwise() * ydot;
     //S^-1*U'*Wy*ydot
        e_scalar maxDeltaS = e_scalar(0.0);
        e_scalar prevS = e_scalar(0.0);
@@ -85,7 +85,7 @@ bool WDLSSolver::solve(const e_matrix& A, const e_vector& Wy, const e_vector& yd
                }
                lambda = (S < m_epsilon) ? (e_scalar(1.0)-KDL::sqr(S/m_epsilon))*m_lambda*m_lambda : e_scalar(0.0);
                alpha = m_U.col(i).dot(m_Wy_ydot)*S/(S*S+lambda);
-               vmax = m_WqV.col(i).array().abs().maxCoeff();
+               vmax = m_WqV.col(i).cwise().abs().maxCoeff();
                norm = fabs(alpha*vmax);
                if (norm > m_qmax) {
                        qdot += m_WqV.col(i)*(alpha*m_qmax/norm);