#include <Specific_Box3DVolumeFactory.h>
Inheritance diagram for Box3DVolumeFactory:

Public Member Functions | |
| Box3DVolumeFactory () | |
| default constructor | |
| virtual | ~Box3DVolumeFactory () |
| default destructor | |
| IVolume * | newVolume (std::string name, std::string type, EVector pos, EVector dim, EVector dir1, EVector dir2) |
| Create a Box3D (2 direction vectors must be provided);. | |
Definition at line 9 of file Specific_Box3DVolumeFactory.h.
| Box3DVolumeFactory::Box3DVolumeFactory | ( | ) | [inline] |
| virtual Box3DVolumeFactory::~Box3DVolumeFactory | ( | ) | [inline, virtual] |
| 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 }
1.4.7