Add ctors/setters from float/double arrays.
authormtadel <mtadel@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 22 Mar 2007 14:42:54 +0000 (14:42 +0000)
committermtadel <mtadel@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 22 Mar 2007 14:42:54 +0000 (14:42 +0000)
EVE/Reve/ZTrans.cxx
EVE/Reve/ZTrans.h

index f3304ab..fe6fa27 100644 (file)
@@ -81,6 +81,24 @@ ZTrans::ZTrans(const ZTrans& t) :
   SetTrans(t, kFALSE);
 }
 
+ZTrans::ZTrans(const Double_t arr[16]) :
+  TObject(),
+  mA1(0), mA2(0), mA3(0), bAsOK(kFALSE),
+  fUseTrans (kTRUE),
+  fEditTrans(kFALSE)
+{
+  SetFromArray(arr);
+}
+
+ZTrans::ZTrans(const Float_t  arr[16]) :
+  TObject(),
+  mA1(0), mA2(0), mA3(0), bAsOK(kFALSE),
+  fUseTrans (kTRUE),
+  fEditTrans(kFALSE)
+{
+  SetFromArray(arr);
+}
+
 /**************************************************************************/
 
 void ZTrans::UnitTrans()
@@ -114,6 +132,18 @@ void ZTrans::SetTrans(const ZTrans& t, Bool_t copyAngles)
   }
 }
 
+void ZTrans::SetFromArray(const Double_t arr[16])
+{
+  for(Int_t i=0; i<16; ++i) M[i] = arr[i];
+  bAsOK = false;
+}
+
+void ZTrans::SetFromArray(const Float_t  arr[16])
+{
+  for(Int_t i=0; i<16; ++i) M[i] = arr[i];
+  bAsOK = false;
+}
+
 void ZTrans::SetupRotation(Int_t i, Int_t j, Double_t f)
 {
   // Setup the matrix as an elementary rotation.
@@ -169,6 +199,17 @@ ZTrans ZTrans::operator*(const ZTrans& t)
 }
 
 /**************************************************************************/
+
+void ZTrans::TransposeRotationPart()
+{
+  Double_t x;
+  x = M[F01]; M[F01] = M[F10]; M[F10] = x;
+  x = M[F02]; M[F02] = M[F20]; M[F20] = x;
+  x = M[F12]; M[F12] = M[F21]; M[F21] = x;
+  bAsOK = false;
+}
+
+/**************************************************************************/
 // Move & Rotate
 /**************************************************************************/
 
index 3251c32..a590399 100644 (file)
@@ -48,6 +48,8 @@ protected:
 public:
   ZTrans();
   ZTrans(const ZTrans& t);
+  ZTrans(const Double_t arr[16]);
+  ZTrans(const Float_t  arr[16]);
   virtual ~ZTrans() {}
 
   // General operations
@@ -55,6 +57,8 @@ public:
   void     UnitTrans();
   void     UnitRot();
   void     SetTrans(const ZTrans& t, Bool_t copyAngles=kTRUE);
+  void     SetFromArray(const Double_t arr[16]);
+  void     SetFromArray(const Float_t  arr[16]);
   ZTrans&  operator=(const ZTrans& t) { SetTrans(t); return *this; }
   void     SetupRotation(Int_t i, Int_t j, Double_t f);
 
@@ -65,6 +69,8 @@ public:
   void MultRight(const ZTrans& t);
   void operator*=(const ZTrans& t) { MultRight(t); }
 
+  void TransposeRotationPart();
+
   ZTrans operator*(const ZTrans& t);
 
   // Move & Rotate