1 #ifndef Geom_newTkRotation_H 2 #define Geom_newTkRotation_H 18 std::ostream& operator<<(std::ostream& s, const TkRotation<T>&
r);
20 std::ostream& operator<<(std::ostream& s, const TkRotation2D<T>&
r);
40 TkRotation(
T xx,
T xy,
T xz,
T yx,
T yy,
T yz,
T zx,
T zy,
T zz) :
rot(
xx,
xy,
xz,
yx,
yy,
yz,
zx,
zy,
zz) {}
51 rot.axis[2] = uZ.basicVector().v;
133 template <
typename U>
146 template <
class Scalar>
149 xy() *
v.x() +
yy() *
v.y() +
zy() *
v.z(),
150 xz() *
v.x() +
yz() *
v.y() +
zz() *
v.z());
179 fabs(newX.
mag2() - 1.) > del || fabs(newY.
mag2() - 1.) > del || fabs(newZ.
mag2() - 1.) > del ||
180 fabs(newX.
dot(newY)) > del || fabs(newY.
dot(newZ)) > del || fabs(newZ.
dot(newX)) > del) {
185 TkRotation(newX.
x(), newY.
x(), newZ.
x(), newX.
y(), newY.
y(), newZ.
y(), newX.
z(), newY.
z(), newZ.
z()));
193 T xx()
const {
return rot.axis[0].arr[0]; }
194 T xy()
const {
return rot.axis[0].arr[1]; }
195 T xz()
const {
return rot.axis[0].arr[2]; }
196 T yx()
const {
return rot.axis[1].arr[0]; }
197 T yy()
const {
return rot.axis[1].arr[1]; }
198 T yz()
const {
return rot.axis[1].arr[2]; }
199 T zx()
const {
return rot.axis[2].arr[0]; }
200 T zy()
const {
return rot.axis[2].arr[1]; }
201 T zz()
const {
return rot.axis[2].arr[2]; }
213 template <
class T,
class U>
216 r.yx() *
v.x() +
r.yy() *
v.y() +
r.yz() *
v.z(),
217 r.zx() *
v.x() +
r.zy() *
v.y() +
r.zz() *
v.z());
220 template <
class T,
class U>
223 return RT(
a.xx() *
b.xx() +
a.xy() *
b.yx() +
a.xz() *
b.zx(),
224 a.xx() *
b.xy() +
a.xy() *
b.yy() +
a.xz() *
b.zy(),
225 a.xx() *
b.xz() +
a.xy() *
b.yz() +
a.xz() *
b.zz(),
226 a.yx() *
b.xx() +
a.yy() *
b.yx() +
a.yz() *
b.zx(),
227 a.yx() *
b.xy() +
a.yy() *
b.yy() +
a.yz() *
b.zy(),
228 a.yx() *
b.xz() +
a.yy() *
b.yz() +
a.yz() *
b.zz(),
229 a.zx() *
b.xx() +
a.zy() *
b.yx() +
a.zz() *
b.zx(),
230 a.zx() *
b.xy() +
a.zy() *
b.yy() +
a.zz() *
b.zy(),
231 a.zx() *
b.xz() +
a.zy() *
b.yz() +
a.zz() *
b.zz());
Basic3DVector< T > BasicVector
TkRotation(const GlobalVector &aX, const GlobalVector &aY)
BasicVector rotateBack(const BasicVector &v) const
Vector3DBase< typename PreciseFloatType< T, U >::Type, FrameTag > cross(const Vector3DBase< U, FrameTag > &v) const
TkRotation2D(mathSSE::Rot2< T > const &irot)
T x() const
Cartesian x coordinate.
TkRotation2D(const BasicVector &uX, const BasicVector &uY)
TkRotation(const Basic3DVector< T > &axis, T phi)
Basic3DVector< T > y() const
TkRotation & transform(const TkRotation &b)
Basic3DVector< T > rotate(const Basic3DVector< T > &v) const
Sin< T >::type sin(const T &t)
T y() const
Cartesian y coordinate.
T y() const
Cartesian y coordinate.
TkRotation(const TkRotation< U > &a)
Vector3DBase< T, GlobalTag > GlobalVector
Geom::Theta< T > theta() const
TkRotation & rotateAxes(const Basic3DVector< T > &newX, const Basic3DVector< T > &newY, const Basic3DVector< T > &newZ)
TkRotation transposed() const
Basic3DVector< T > x() const
std::ostream & operator<<< double >(std::ostream &s, const TkRotation< double > &r)
Basic3DVector< T > operator*(const Basic3DVector< T > &v) const
TkRotation(T xx, T xy, T xz, T yx, T yy, T yz, T zx, T zy, T zz)
Basic3DVector< T > multiplyInverse(const Basic2DVector< T > &v) const
Cos< T >::type cos(const T &t)
Basic3DVector cross(const Basic3DVector &lh) const
Vector product, or "cross" product, with a vector of same type.
TkRotation2D transposed() const
Basic3DVector< T > z() const
Basic3DVector< Scalar > multiplyInverse(const Basic3DVector< Scalar > &v) const
TkRotation(const BasicVector &aX, const BasicVector &aY)
TkRotation(mathSSE::Rot3< T > const &irot)
Basic2DVector unit() const
const BasicVectorType & basicVector() const
Basic3DVector< T > rotateBack(const Basic3DVector< T > &v) const
Basic3DVector< U > operator*(const TkRotation< T > &r, const Basic3DVector< U > &v)
TkRotation & operator*=(const TkRotation &b)
T z() const
Cartesian z coordinate.
Basic3DVector< T > multiplyInverse(const Basic3DVector< T > &v) const
TkRotation(const GlobalVector &uX, const GlobalVector &uY, const GlobalVector &uZ)
T mag2() const
The vector magnitude squared. Equivalent to vec.dot(vec)
TkRotation2D(const BasicVector &aX)
TkRotation operator*(const TkRotation &b) const
Basic3DVector< T > operator*(const Basic2DVector< T > &v) const
BasicVector rotate(const BasicVector &v) const
TkRotation2D(T xx, T xy, T yx, T yy)
Basic3DVector unit() const
Geom::Phi< T > phi() const
Vector3DBase unit() const
Basic2DVector< T > BasicVector
T dot(const Basic3DVector &rh) const
Scalar product, or "dot" product, with a vector of same type.
T x() const
Cartesian x coordinate.
TkRotation multiplyInverse(const TkRotation &b) const
std::ostream & operator<<< float >(std::ostream &s, const TkRotation< float > &r)
TkRotation(const BasicVector &uX, const BasicVector &uY, const BasicVector &uZ)