CLHEP 2.0.4.7 Reference Documentation
CLHEP Home Page CLHEP Documentation CLHEP Bug Reports |
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 */