CLHEP 2.0.4.7 Reference Documentation
   
CLHEP Home Page     CLHEP Documentation     CLHEP Bug Reports

Normal3D.cc

Go to the documentation of this file.
00001 // -*- C++ -*-
00002 // $Id: Normal3D.cc,v 1.3 2003/08/13 20:00:11 garren Exp $
00003 // ---------------------------------------------------------------------------
00004 
00005 #include "CLHEP/Geometry/defs.h"
00006 #include "CLHEP/Geometry/Normal3D.h"
00007 #include "CLHEP/Geometry/Transform3D.h"
00008 
00009 namespace HepGeom {
00010   //--------------------------------------------------------------------------
00011   Normal3D<float> &
00012   Normal3D<float>::transform(const Transform3D & m) {
00013     double vx = x(),    vy = y(),    vz = z();
00014     double xx = m.xx(), xy = m.xy(), xz = m.xz();
00015     double yx = m.yx(), yy = m.yy(), yz = m.yz();
00016     double zx = m.zx(), zy = m.zy(), zz = m.zz();
00017     set((yy*zz-yz*zy)*vx+(yz*zx-yx*zz)*vy+(yx*zy-yy*zx)*vz,
00018         (zy*xz-zz*xy)*vx+(zz*xx-zx*xz)*vy+(zx*xy-zy*xx)*vz,
00019         (xy*yz-xz*yy)*vx+(xz*yx-xx*yz)*vy+(xx*yy-xy*yx)*vz);
00020     return *this;
00021   }
00022 
00023   //--------------------------------------------------------------------------
00024   Normal3D<float>
00025   operator*(const Transform3D & m, const Normal3D<float> & v) {
00026     double vx = v.x(),  vy = v.y(),  vz = v.z();
00027     double xx = m.xx(), xy = m.xy(), xz = m.xz();
00028     double yx = m.yx(), yy = m.yy(), yz = m.yz();
00029     double zx = m.zx(), zy = m.zy(), zz = m.zz();
00030     return Normal3D<float>
00031       ((yy*zz-yz*zy)*vx+(yz*zx-yx*zz)*vy+(yx*zy-yy*zx)*vz,
00032        (zy*xz-zz*xy)*vx+(zz*xx-zx*xz)*vy+(zx*xy-zy*xx)*vz,
00033        (xy*yz-xz*yy)*vx+(xz*yx-xx*yz)*vy+(xx*yy-xy*yx)*vz);
00034   }
00035 
00036   //--------------------------------------------------------------------------
00037   Normal3D<double> &
00038   Normal3D<double>::transform(const Transform3D & m) {
00039     double vx = x(),    vy = y(),    vz = z();
00040     double xx = m.xx(), xy = m.xy(), xz = m.xz();
00041     double yx = m.yx(), yy = m.yy(), yz = m.yz();
00042     double zx = m.zx(), zy = m.zy(), zz = m.zz();
00043     set((yy*zz-yz*zy)*vx+(yz*zx-yx*zz)*vy+(yx*zy-yy*zx)*vz,
00044         (zy*xz-zz*xy)*vx+(zz*xx-zx*xz)*vy+(zx*xy-zy*xx)*vz,
00045         (xy*yz-xz*yy)*vx+(xz*yx-xx*yz)*vy+(xx*yy-xy*yx)*vz);
00046     return *this;
00047   }
00048 
00049   //--------------------------------------------------------------------------
00050   Normal3D<double>
00051   operator*(const Transform3D & m, const Normal3D<double> & v) {
00052     double vx = v.x(),  vy = v.y(),  vz = v.z();
00053     double xx = m.xx(), xy = m.xy(), xz = m.xz();
00054     double yx = m.yx(), yy = m.yy(), yz = m.yz();
00055     double zx = m.zx(), zy = m.zy(), zz = m.zz();
00056     return Normal3D<double>
00057       ((yy*zz-yz*zy)*vx+(yz*zx-yx*zz)*vy+(yx*zy-yy*zx)*vz,
00058        (zy*xz-zz*xy)*vx+(zz*xx-zx*xz)*vy+(zx*xy-zy*xx)*vz,
00059        (xy*yz-xz*yy)*vx+(xz*yx-xx*yz)*vy+(xx*yy-xy*yx)*vz);
00060   }
00061 } /* namespace HepGeom */

Generated on Thu Jul 1 22:02:30 2010 for CLHEP by  doxygen 1.4.7