Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
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 */
double zz() const
Definition: Transform3D.h:281
double yz() const
Definition: Transform3D.h:272
double xy() const
Definition: Transform3D.h:260
double zx() const
Definition: Transform3D.h:275
double yx() const
Definition: Transform3D.h:266
double zy() const
Definition: Transform3D.h:278
double xx() const
Definition: Transform3D.h:257
double yy() const
Definition: Transform3D.h:269
double xz() const
Definition: Transform3D.h:263
Normal3D< float > operator*(const Transform3D &m, const Normal3D< float > &v)
Definition: Normal3D.cc:23