Commit in GeomConverter/src/org/lcsim/detector on MAIN
Transform3D.java+35-131.2 -> 1.3
JM: Fix bugs.

GeomConverter/src/org/lcsim/detector
Transform3D.java 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- Transform3D.java	9 Mar 2007 22:47:38 -0000	1.2
+++ Transform3D.java	30 Mar 2007 21:09:44 -0000	1.3
@@ -69,14 +69,18 @@
     {
 //        System.out.println("Input coordinates: "+coordinates);
 //        System.out.println("Translation: "+_translation);
-        translate(coordinates);
+//        translate(coordinates);
 //        System.out.println("Translated coordinates: "+coordinates);
         
 //        System.out.println("Rotation: "+_rotation);
-        rotate(coordinates);
+//        rotate(coordinates);
 //        System.out.println("Rotated coordinates: "+coordinates);
         
 //        return coordinates;
+
+        rotate(coordinates);
+        translate(coordinates);
+    
     }
     
     public void translate(Hep3Vector coordinates)
@@ -94,7 +98,7 @@
     // Return transformed vectors
     public Hep3Vector transformed(Hep3Vector coordinates)
     {    
-        return rotated(translated(coordinates));
+        return translated(rotated(coordinates));
     }
     
     public Hep3Vector translated(Hep3Vector coordinates)
@@ -110,35 +114,53 @@
     // Invert the transformation
     public void invert()
     {
-        _translation = VecOp.mult(-1.0,VecOp.mult(_rotation.getRotationMatrix(),_translation));
+//        _translation = VecOp.mult(-1.0,VecOp.mult(_rotation.getRotationMatrix(),_translation));
+//        _rotation.invert();
+        _translation = VecOp.mult(-1.0,VecOp.mult(_rotation.inverse().getRotationMatrix(),_translation));
         _rotation.invert();
     }
     
     public Transform3D inverse()
     {
+//        Transform3D transform = new Transform3D(
+//                VecOp.mult(-1.0,VecOp.mult(_rotation.getRotationMatrix(),_translation)),
+//                _rotation.inverse());
+        
         Transform3D transform = new Transform3D(
-                VecOp.mult(-1.0,VecOp.mult(_rotation.getRotationMatrix(),_translation)),
+                VecOp.mult(-1.0,VecOp.mult(_rotation.inverse().getRotationMatrix(),_translation)),
                 _rotation.inverse());
         return transform;
     }
     
     // Static functions
-    public static Transform3D multiply(ITransform3D transformation1, ITransform3D transformation2)
+    public static Transform3D multiply(ITransform3D transformation_second, ITransform3D transformation_first)
     {
-        Rotation3D rotation = Rotation3D.multiply(transformation1.getRotation(),transformation2.getRotation());
+//        Hep3Vector translation = VecOp.add(
+//                VecOp.mult(transformation2.getRotation().inverse().getRotationMatrix(),transformation1.getTranslation()),
+//                transformation2.getTranslation());
+//        Rotation3D rotation = Rotation3D.multiply(transformation1.getRotation(),transformation2.getRotation());
+
         Hep3Vector translation = VecOp.add(
-                VecOp.mult(transformation2.getRotation().inverse().getRotationMatrix(),transformation1.getTranslation()),
-                transformation2.getTranslation());
+                VecOp.mult(transformation_second.getRotation().getRotationMatrix(),transformation_first.getTranslation()),
+                transformation_second.getTranslation());
+        Rotation3D rotation = Rotation3D.multiply(transformation_second.getRotation(),transformation_first.getRotation());
+
         return new Transform3D(translation,rotation);
     }
     
     // multiply in place
-    public void multiplyBy(ITransform3D transformation)
+    public void multiplyBy(ITransform3D transformation_first)
     {
-        _rotation.multiplyBy(transformation.getRotation());
+//        _translation = VecOp.add(
+//                VecOp.mult(transformation.getRotation().inverse().getRotationMatrix(),_translation),
+//                transformation.getTranslation());
+//        _rotation.multiplyBy(transformation.getRotation());
+        
         _translation = VecOp.add(
-                VecOp.mult(transformation.getRotation().inverse().getRotationMatrix(),_translation),
-                transformation.getTranslation());
+                VecOp.mult(_rotation.getRotationMatrix(),transformation_first.getTranslation()),
+                _translation);
+        _rotation.multiplyBy(transformation_first.getRotation());
+
     }
     
     public String toString()
CVSspam 0.2.8