GeomConverter/src/org/lcsim/detector
diff -u -r1.3 -r1.4
--- CoordinateTransformation3D.java 27 Feb 2007 19:29:32 -0000 1.3
+++ CoordinateTransformation3D.java 28 Feb 2007 21:37:28 -0000 1.4
@@ -59,25 +59,49 @@
return _rotation;
}
- // Transformations
- public Hep3Vector transform(Hep3Vector coordinates)
+ // Transformations in place
+ public void transform(Hep3Vector coordinates)
{
+// System.out.println("Input coordinates: "+coordinates);
+// System.out.println("Translation: "+_translation);
translate(coordinates);
+// System.out.println("Translated coordinates: "+coordinates);
+
+// System.out.println("Rotation: "+_rotation);
rotate(coordinates);
- return coordinates;
+// System.out.println("Rotated coordinates: "+coordinates);
+
+// return coordinates;
}
- public Hep3Vector translate(Hep3Vector coordinates)
+ public void translate(Hep3Vector coordinates)
{
- return VecOp.add(coordinates,_translation);
+ Hep3Vector new_coordinates = VecOp.add(coordinates,_translation);
+ ((BasicHep3Vector)coordinates).setV(new_coordinates.x(),new_coordinates.y(),new_coordinates.z());
}
- public Hep3Vector rotate(Hep3Vector coordinates)
+ public void rotate(Hep3Vector coordinates)
{
- //return VecOp.mult(_rotation,coordinates);
- return VecOp.mult(_rotation.getRotationMatrix(),coordinates);
+ Hep3Vector new_coordinates = VecOp.mult(_rotation.getRotationMatrix(),coordinates);
+ ((BasicHep3Vector)coordinates).setV(new_coordinates.x(),new_coordinates.y(),new_coordinates.z());
}
+ // Return transformed vectors
+ public Hep3Vector transformed(Hep3Vector coordinates)
+ {
+ return rotated(translated(coordinates));
+ }
+
+ public Hep3Vector translated(Hep3Vector coordinates)
+ {
+ return VecOp.add(coordinates,_translation);
+ }
+
+ public Hep3Vector rotated(Hep3Vector coordinates)
+ {
+ return VecOp.mult(_rotation.getRotationMatrix(),coordinates);
+ }
+
// Invert the transformation
public void invert()
{
@@ -94,17 +118,21 @@
}
// Static functions
- public static CoordinateTransformation3D mult(CoordinateTransformation3D transformation1, CoordinateTransformation3D transformation2)
+ public static CoordinateTransformation3D multiply(CoordinateTransformation3D transformation1, CoordinateTransformation3D transformation2)
{
- Rotation3D rotation = new Rotation3D(VecOp.mult(transformation1.getRotation().getRotationMatrix(),transformation2.getRotation().getRotationMatrix()));
- Hep3Vector translation = VecOp.add(VecOp.mult(transformation1.getRotation().getRotationMatrix(),transformation2.getTranslation()),transformation1.getTranslation());
+ Rotation3D rotation = Rotation3D.multiply(transformation1.getRotation(),transformation2.getRotation());
+ Hep3Vector translation = VecOp.add(
+ VecOp.mult(transformation2.getRotation().inverse().getRotationMatrix(),transformation1.getTranslation()),
+ transformation2.getTranslation());
return new CoordinateTransformation3D(translation,rotation);
}
// multiply in place
- public void mult(ICoordinateTransformation3D transformation)
+ public void multiplyBy(ICoordinateTransformation3D transformation)
{
- _rotation.setRotationMatrix(VecOp.mult(_rotation.getRotationMatrix(), transformation.getRotation().getRotationMatrix()));
- _translation = VecOp.add(_translation, transformation.getTranslation());
+ _rotation.multiplyBy(transformation.getRotation());
+ _translation = VecOp.add(
+ VecOp.mult(transformation.getRotation().inverse().getRotationMatrix(),_translation),
+ transformation.getTranslation());
}
}
GeomConverter/src/org/lcsim/detector
diff -u -r1.2 -r1.3
--- IRotation3D.java 27 Feb 2007 01:08:20 -0000 1.2
+++ IRotation3D.java 28 Feb 2007 21:37:28 -0000 1.3
@@ -16,7 +16,7 @@
*
* @author Tim Nelson <[log in to unmask]>
* @author Jeremy McCormick <[log in to unmask]>
- * @version $Id: IRotation3D.java,v 1.2 2007/02/27 01:08:20 jeremy Exp $
+ * @version $Id: IRotation3D.java,v 1.3 2007/02/28 21:37:28 tknelson Exp $
*/
interface IRotation3D
{
@@ -94,7 +94,7 @@
* modifying this IRotation3D in place.
* @param rotation
*/
- public void multiply(IRotation3D rotation);
+ public void multiplyBy(IRotation3D rotation);
/**
* Compare this IRotation3D with another.
GeomConverter/src/org/lcsim/detector
diff -u -r1.1 -r1.2
--- ICoordinateTransformation3D.java 26 Feb 2007 19:25:19 -0000 1.1
+++ ICoordinateTransformation3D.java 28 Feb 2007 21:37:28 -0000 1.2
@@ -16,12 +16,17 @@
public Hep3Vector getTranslation();
public Rotation3D getRotation();
- // Transformations
- public Hep3Vector transform(Hep3Vector coordinates);
- public Hep3Vector translate(Hep3Vector coordinates);
- public Hep3Vector rotate(Hep3Vector coordinates);
+ // Transformations in place
+ public void transform(Hep3Vector coordinates);
+ public void translate(Hep3Vector coordinates);
+ public void rotate(Hep3Vector coordinates);
- public void mult(ICoordinateTransformation3D trans);
+ // Transformations creating new position vectors
+ public Hep3Vector transformed(Hep3Vector coordinates);
+ public Hep3Vector translated(Hep3Vector coordinates);
+ public Hep3Vector rotated(Hep3Vector coordinates);
+
+ public void multiplyBy(ICoordinateTransformation3D trans);
public void invert();
}
\ No newline at end of file
GeomConverter/src/org/lcsim/detector
diff -u -r1.6 -r1.7
--- Rotation3D.java 27 Feb 2007 01:08:20 -0000 1.6
+++ Rotation3D.java 28 Feb 2007 21:37:29 -0000 1.7
@@ -12,7 +12,7 @@
*
* @author Tim Nelson <[log in to unmask]>
* @author Jeremy McCormick <[log in to unmask]>
- * @version $Id: Rotation3D.java,v 1.6 2007/02/27 01:08:20 jeremy Exp $
+ * @version $Id: Rotation3D.java,v 1.7 2007/02/28 21:37:29 tknelson Exp $
*/
public class Rotation3D implements IRotation3D
{
@@ -106,7 +106,7 @@
public IRotation3D inverse()
{
BasicHep3Matrix inversematrix = new BasicHep3Matrix(matrix);
- inversematrix.invert();
+ inversematrix.transpose();
return new Rotation3D(inversematrix);
}
@@ -406,10 +406,9 @@
}
}
- public void multiply(IRotation3D rotation)
+ public void multiplyBy(IRotation3D rotation)
{
- this.setRotationMatrix(
- Rotation3D.mult(rotation.getRotationMatrix(), this.getRotationMatrix()));
+ this.setRotationMatrix(Rotation3D.mult(this.getRotationMatrix(), rotation.getRotationMatrix()));
}
public static Rotation3D multiply(IRotation3D rot1, IRotation3D rot2)