Geant4 11.2.2
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Normal3D.cc
Go to the documentation of this file.
1// -*- C++ -*-
2// ---------------------------------------------------------------------------
3
6
7namespace 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 //--------------------------------------------------------------------------
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 //--------------------------------------------------------------------------
49 operator*(const Transform3D & m, const Normal3D<double> & v) {
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 */
Normal3D< float > operator*(const Transform3D &m, const Normal3D< float > &v)
Definition Normal3D.cc:23