toon-members
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Toon-members] tag/src five_point.cpp


From: Gerhard Reitmayr
Subject: [Toon-members] tag/src five_point.cpp
Date: Tue, 28 Apr 2009 14:27:44 +0000

CVSROOT:        /cvsroot/toon
Module name:    tag
Changes by:     Gerhard Reitmayr <gerhard>      09/04/28 14:27:43

Modified files:
        src            : five_point.cpp 

Log message:
        generator fields give slight speed improvement

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/tag/src/five_point.cpp?cvsroot=toon&r1=1.13&r2=1.14

Patches:
Index: five_point.cpp
===================================================================
RCS file: /cvsroot/toon/tag/src/five_point.cpp,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -b -r1.13 -r1.14
--- five_point.cpp      28 Apr 2009 10:36:41 -0000      1.13
+++ five_point.cpp      28 Apr 2009 14:27:43 -0000      1.14
@@ -313,17 +313,17 @@
        do {
                wls.clear();
                const Matrix<3> C = getCrossProductMatrix(Rn * X);
-               double error = 0;
                for(unsigned i = 0; i < points.size(); ++i){
                        Vector<5> J;
-                       J[0] = (points[i].second * C) * Rt.generator(0) * (Rt * 
points[i].first);
-                       J[1] = (points[i].second * C) * Rt.generator(1) * (Rt * 
points[i].first);
-                       J[2] = (points[i].second * C) * Rt.generator(2) * (Rt * 
points[i].first);
-                       J[3] = points[i].second * getCrossProductMatrix(Rn * 
Rn.generator(1) * X) * (Rt * points[i].first);
-                       J[4] = points[i].second * getCrossProductMatrix(Rn * 
Rn.generator(2) * X) * (Rt * points[i].first);
-                       const double e = 0 - (points[i].second * C) * (Rt * 
points[i].first);
+                       const Vector<3> LEFT = points[i].second * C;
+                       const Vector<3> RIGHT = Rt * points[i].first;
+                       J[0] = LEFT * Rt.generator_field(0, RIGHT);
+                       J[1] = LEFT * Rt.generator_field(1, RIGHT);
+                       J[2] = LEFT * Rt.generator_field(2, RIGHT);
+                       J[3] = points[i].second * getCrossProductMatrix(Rn * 
Rn.generator_field(1, X)) * RIGHT;
+                       J[4] = points[i].second * getCrossProductMatrix(Rn * 
Rn.generator_field(2, X)) * RIGHT;
+                       const double e = 0 - LEFT * RIGHT;
                        wls.add_mJ(e, J);
-                       error += e*e;
                }
                wls.compute();
                Rt = SO3<>::exp(wls.get_mu().slice<0,3>()) * Rt;




reply via email to

[Prev in Thread] Current Thread [Next in Thread]