GeomConverter/src/org/lcsim/detector
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()