Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/externals/clhep/src/Normal3D.cc

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

  1 // -*- C++ -*-
  2 // ---------------------------------------------------------------------------
  3 
  4 #include "CLHEP/Geometry/Normal3D.h"
  5 #include "CLHEP/Geometry/Transform3D.h"
  6 
  7 namespace HepGeom {
  8   //--------------------------------------------------------------------------
  9   Normal3D<float> &
 10   Normal3D<float>::transform(const Transform3D & m) {
 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   //--------------------------------------------------------------------------
 22   Normal3D<float>
 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> &
 36   Normal3D<double>::transform(const Transform3D & m) {
 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   //--------------------------------------------------------------------------
 48   Normal3D<double>
 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 */
 60