ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Normal3D.cc
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file Normal3D.cc
1 // -*- C++ -*-
2 // ---------------------------------------------------------------------------
3 
6 
7 namespace HepGeom {
8  //--------------------------------------------------------------------------
9  Normal3D<float> &
11  double vx = x(), vy = y(), vz = z();
12  double xx = m.xx(), xy = m.xy(), xz = m.xz();
13  double yx = m.yx(), yy = m.yy(), yz = m.yz();
14  double zx = m.zx(), zy = m.zy(), zz = m.zz();
15  set((yy*zz-yz*zy)*vx+(yz*zx-yx*zz)*vy+(yx*zy-yy*zx)*vz,
16  (zy*xz-zz*xy)*vx+(zz*xx-zx*xz)*vy+(zx*xy-zy*xx)*vz,
17  (xy*yz-xz*yy)*vx+(xz*yx-xx*yz)*vy+(xx*yy-xy*yx)*vz);
18  return *this;
19  }
20 
21  //--------------------------------------------------------------------------
23  operator*(const Transform3D & m, const Normal3D<float> & v) {
24  double vx = v.x(), vy = v.y(), vz = v.z();
25  double xx = m.xx(), xy = m.xy(), xz = m.xz();
26  double yx = m.yx(), yy = m.yy(), yz = m.yz();
27  double zx = m.zx(), zy = m.zy(), zz = m.zz();
28  return Normal3D<float>
29  ((yy*zz-yz*zy)*vx+(yz*zx-yx*zz)*vy+(yx*zy-yy*zx)*vz,
30  (zy*xz-zz*xy)*vx+(zz*xx-zx*xz)*vy+(zx*xy-zy*xx)*vz,
31  (xy*yz-xz*yy)*vx+(xz*yx-xx*yz)*vy+(xx*yy-xy*yx)*vz);
32  }
33 
34  //--------------------------------------------------------------------------
35  Normal3D<double> &
37  double vx = x(), vy = y(), vz = z();
38  double xx = m.xx(), xy = m.xy(), xz = m.xz();
39  double yx = m.yx(), yy = m.yy(), yz = m.yz();
40  double zx = m.zx(), zy = m.zy(), zz = m.zz();
41  set((yy*zz-yz*zy)*vx+(yz*zx-yx*zz)*vy+(yx*zy-yy*zx)*vz,
42  (zy*xz-zz*xy)*vx+(zz*xx-zx*xz)*vy+(zx*xy-zy*xx)*vz,
43  (xy*yz-xz*yy)*vx+(xz*yx-xx*yz)*vy+(xx*yy-xy*yx)*vz);
44  return *this;
45  }
46 
47  //--------------------------------------------------------------------------
50  double vx = v.x(), vy = v.y(), vz = v.z();
51  double xx = m.xx(), xy = m.xy(), xz = m.xz();
52  double yx = m.yx(), yy = m.yy(), yz = m.yz();
53  double zx = m.zx(), zy = m.zy(), zz = m.zz();
54  return Normal3D<double>
55  ((yy*zz-yz*zy)*vx+(yz*zx-yx*zz)*vy+(yx*zy-yy*zx)*vz,
56  (zy*xz-zz*xy)*vx+(zz*xx-zx*xz)*vy+(zx*xy-zy*xx)*vz,
57  (xy*yz-xz*yy)*vx+(xz*yx-xx*yz)*vy+(xx*yy-xy*yx)*vz);
58  }
59 } /* namespace HepGeom */