Box3DVolumeFactory Class Reference

#include <Specific_Box3DVolumeFactory.h>

Inheritance diagram for Box3DVolumeFactory:

VolumeFactoryB IVolumeFactory List of all members.

Public Member Functions

 Box3DVolumeFactory ()
 default constructor
virtual ~Box3DVolumeFactory ()
 default destructor
IVolumenewVolume (std::string name, std::string type, EVector pos, EVector dim, EVector dir1, EVector dir2)
 Create a Box3D (2 direction vectors must be provided);.

Detailed Description

Definition at line 9 of file Specific_Box3DVolumeFactory.h.


Constructor & Destructor Documentation

Box3DVolumeFactory::Box3DVolumeFactory (  )  [inline]

default constructor

Definition at line 14 of file Specific_Box3DVolumeFactory.h.

00014 {}

virtual Box3DVolumeFactory::~Box3DVolumeFactory (  )  [inline, virtual]

default destructor

Definition at line 17 of file Specific_Box3DVolumeFactory.h.

00017 {}


Member Function Documentation

IVolume * Box3DVolumeFactory::newVolume ( std::string  name,
std::string  type,
EVector  pos,
EVector  dim,
EVector  dir1,
EVector  dir2 
) [virtual]

Create a Box3D (2 direction vectors must be provided);.

Reimplemented from VolumeFactoryB.

Definition at line 11 of file Volume_Box3DVolumeFactory.cxx.

References IVolume::addBorderSurface(), and crossprod().

00018 {
00019 
00020   IVolume* vol = new VolumeB(name, type, pos, size, dir1,dir2);
00021 
00022   EVector posS(3,0);
00023   EVector dirSA(3,0);
00024   EVector dirSB(3,0);
00025   EVector sizeS(2,0);
00026 
00027   //------ front rectangle (surf 1) --------------------------
00028   dirSA = dir1;
00029   dirSB = dir2;
00030 
00031   sizeS[0] =  size[1];
00032   sizeS[1] =  size[2];
00033 
00034   posS = pos + dirSA*size[0]/2;
00035 
00036   vol->addBorderSurface("front", "Rectangle", posS, sizeS, dirSA, dirSB);
00037 
00038   //------ back rectangle (surf 2) --------------------------
00039   posS = pos - dirSA*size[0]/2;
00040 
00041   vol->addBorderSurface("back", "Rectangle", posS, sizeS, dirSA, dirSB);
00042 
00043   //------ top rectangle (surf 3)
00044   dirSA = crossprod(dir1,dir2);
00045   dirSB = dir1;
00046 
00047   sizeS[0] =  size[0];
00048   sizeS[1] =  size[1];
00049 
00050   posS = pos + dirSA*size[2]/2;
00051 
00052   vol->addBorderSurface("top", "Rectangle", posS, sizeS, dirSA, dirSB);
00053 
00054   //------ bottom rectangle (surf 4) --------------------------
00055   posS = pos - dirSA*size[2]/2;
00056 
00057   vol->addBorderSurface("bottom", "Rectangle", posS, sizeS, dirSA, dirSB);
00058   
00059 
00060   //------ right rectangle (surf 5) --------------------------
00061   dirSA = dir2;
00062   dirSB = dir1;
00063 
00064   sizeS[0] =  size[0];
00065   sizeS[1] =  size[2];
00066 
00067   posS = pos + dirSA*size[1]/2;
00068 
00069 
00070   vol->addBorderSurface("right", "Rectangle", posS, sizeS, dirSA, dirSB);
00071 
00072   //------ left rectangle (surf 6) --------------------------
00073   posS = pos - dirSA*size[1]/2;
00074 
00075   vol->addBorderSurface("left", "Rectangle", posS, sizeS, dirSA, dirSB);
00076 
00077   return vol;
00078 
00079 }


The documentation for this class was generated from the following files:
Generated on Mon Nov 23 08:03:59 2009 for MIPP(E907) by  doxygen 1.4.7