11 #if defined(__CINT__) && !defined(__MAKECINT__)
45 fX(x), fY(y), fZ(z), fColor(color)
48 class Box :
public Shape
68 fDX(dX), fDY(dY), fDZ(dZ)
76 if (reqSections & TBuffer3D::kCore) {
87 if (reqSections & TBuffer3D::kBoundingBox) {
89 Double_t halfLength[3] = { fDX, fDY, fDZ };
96 if (reqSections & TBuffer3D::kRawSizes) {
101 if (reqSections & TBuffer3D::kRaw) {
104 buffer.
fPnts[ 0] = fX - fDX; buffer.
fPnts[ 1] = fY - fDY; buffer.
fPnts[ 2] = fZ - fDZ;
105 buffer.
fPnts[ 3] = fX + fDX; buffer.
fPnts[ 4] = fY - fDY; buffer.
fPnts[ 5] = fZ - fDZ;
106 buffer.
fPnts[ 6] = fX + fDX; buffer.
fPnts[ 7] = fY + fDY; buffer.
fPnts[ 8] = fZ - fDZ;
107 buffer.
fPnts[ 9] = fX - fDX; buffer.
fPnts[10] = fY + fDY; buffer.
fPnts[11] = fZ - fDZ;
108 buffer.
fPnts[12] = fX - fDX; buffer.
fPnts[13] = fY - fDY; buffer.
fPnts[14] = fZ + fDZ;
109 buffer.
fPnts[15] = fX + fDX; buffer.
fPnts[16] = fY - fDY; buffer.
fPnts[17] = fZ + fDZ;
110 buffer.
fPnts[18] = fX + fDX; buffer.
fPnts[19] = fY + fDY; buffer.
fPnts[20] = fZ + fDZ;
111 buffer.
fPnts[21] = fX - fDX; buffer.
fPnts[22] = fY + fDY; buffer.
fPnts[23] = fZ + fDZ;
116 buffer.
fSegs[ 0] = fColor ; buffer.
fSegs[ 1] = 0 ; buffer.
fSegs[ 2] = 1 ;
117 buffer.
fSegs[ 3] = fColor ; buffer.
fSegs[ 4] = 1 ; buffer.
fSegs[ 5] = 2 ;
118 buffer.
fSegs[ 6] = fColor ; buffer.
fSegs[ 7] = 2 ; buffer.
fSegs[ 8] = 3 ;
119 buffer.
fSegs[ 9] = fColor ; buffer.
fSegs[10] = 3 ; buffer.
fSegs[11] = 0 ;
120 buffer.
fSegs[12] = fColor ; buffer.
fSegs[13] = 4 ; buffer.
fSegs[14] = 5 ;
121 buffer.
fSegs[15] = fColor ; buffer.
fSegs[16] = 5 ; buffer.
fSegs[17] = 6 ;
122 buffer.
fSegs[18] = fColor ; buffer.
fSegs[19] = 6 ; buffer.
fSegs[20] = 7 ;
123 buffer.
fSegs[21] = fColor ; buffer.
fSegs[22] = 7 ; buffer.
fSegs[23] = 4 ;
124 buffer.
fSegs[24] = fColor ; buffer.
fSegs[25] = 0 ; buffer.
fSegs[26] = 4 ;
125 buffer.
fSegs[27] = fColor ; buffer.
fSegs[28] = 1 ; buffer.
fSegs[29] = 5 ;
126 buffer.
fSegs[30] = fColor ; buffer.
fSegs[31] = 2 ; buffer.
fSegs[32] = 6 ;
127 buffer.
fSegs[33] = fColor ; buffer.
fSegs[34] = 3 ; buffer.
fSegs[35] = 7 ;
134 buffer.
fPols[ 0] = fColor ; buffer.
fPols[ 1] = 4 ; buffer.
fPols[ 2] = 8 ;
136 buffer.
fPols[ 6] = fColor ; buffer.
fPols[ 7] = 4 ; buffer.
fPols[ 8] = 9 ;
138 buffer.
fPols[12] = fColor ; buffer.
fPols[13] = 4 ; buffer.
fPols[14] = 10 ;
140 buffer.
fPols[18] = fColor ; buffer.
fPols[19] = 4 ; buffer.
fPols[20] = 11 ;
142 buffer.
fPols[24] = fColor ; buffer.
fPols[25] = 4 ; buffer.
fPols[26] = 1 ;
144 buffer.
fPols[30] = fColor ; buffer.
fPols[31] = 4 ; buffer.
fPols[32] = 7 ;
153 class SBPyramid :
public Shape
174 fDX(dX), fDY(dY), fDZ(dZ)
182 if (reqSections & TBuffer3D::kCore) {
193 if (reqSections & TBuffer3D::kBoundingBox) {
194 Double_t halfLength[3] = { fDX, fDY, fDZ/2.0 };
195 Double_t origin[3] = { fX , fY, fZ + halfLength[2]};
202 if (reqSections & TBuffer3D::kRawSizes) {
207 if (reqSections & TBuffer3D::kRaw) {
210 buffer.
fPnts[ 0] = fX - fDX; buffer.
fPnts[ 1] = fY - fDY; buffer.
fPnts[ 2] = fZ;
211 buffer.
fPnts[ 3] = fX + fDX; buffer.
fPnts[ 4] = fY - fDY; buffer.
fPnts[ 5] = fZ;
212 buffer.
fPnts[ 6] = fX + fDX; buffer.
fPnts[ 7] = fY + fDY; buffer.
fPnts[ 8] = fZ;
213 buffer.
fPnts[ 9] = fX - fDX; buffer.
fPnts[10] = fY + fDY; buffer.
fPnts[11] = fZ;
214 buffer.
fPnts[12] = fX; buffer.
fPnts[13] = fY ; buffer.
fPnts[14] = fZ + fDZ;
220 buffer.
fSegs[ 0] = fColor ; buffer.
fSegs[ 1] = 0 ; buffer.
fSegs[ 2] = 1 ;
221 buffer.
fSegs[ 3] = fColor ; buffer.
fSegs[ 4] = 1 ; buffer.
fSegs[ 5] = 2 ;
222 buffer.
fSegs[ 6] = fColor ; buffer.
fSegs[ 7] = 2 ; buffer.
fSegs[ 8] = 3 ;
223 buffer.
fSegs[ 9] = fColor ; buffer.
fSegs[10] = 3 ; buffer.
fSegs[11] = 0 ;
224 buffer.
fSegs[12] = fColor ; buffer.
fSegs[13] = 0 ; buffer.
fSegs[14] = 4 ;
225 buffer.
fSegs[15] = fColor ; buffer.
fSegs[16] = 1 ; buffer.
fSegs[17] = 4 ;
226 buffer.
fSegs[18] = fColor ; buffer.
fSegs[19] = 2 ; buffer.
fSegs[20] = 4 ;
227 buffer.
fSegs[21] = fColor ; buffer.
fSegs[22] = 3 ; buffer.
fSegs[23] = 4 ;
234 buffer.
fPols[ 0] = fColor ; buffer.
fPols[ 1] = 4 ; buffer.
fPols[ 2] = 0 ;
237 buffer.
fPols[ 6] = fColor ; buffer.
fPols[ 7] = 3 ; buffer.
fPols[ 8] = 0 ;
239 buffer.
fPols[11] = fColor ; buffer.
fPols[12] = 3 ; buffer.
fPols[13] = 1 ;
241 buffer.
fPols[16] = fColor ; buffer.
fPols[17] = 3 ; buffer.
fPols[18] = 2 ;
243 buffer.
fPols[21] = fColor ; buffer.
fPols[22] = 3 ; buffer.
fPols[23] = 3 ;
262 std::vector<Shape *> fShapes;
274 aShape =
new Box(
kRed, 0.0, 0.0, 0.0, 20.0, 20.0, 20.0);
275 fShapes.push_back(aShape);
276 aShape =
new Box(
kBlue, 50.0, 100.0, 200.0, 5.0, 10.0, 15.0);
277 fShapes.push_back(aShape);
278 aShape =
new SBPyramid(
kGreen, 20.0, 25.0, 45.0, 30.0, 30.0, 90.0);
279 fShapes.push_back(aShape);
292 gPad->GetViewer3D(option);
308 std::vector<Shape *>::const_iterator ShapeIt = fShapes.begin();
310 while (ShapeIt != fShapes.end()) {
314 TBuffer3D & buffer = shape->GetBuffer3D(reqSections);
318 shape->GetBuffer3D(reqSections);
329 printf(
"\n\nviewer3DMaster: This frame demonstates master frame use of 3D viewer architecture.\n");
330 printf(
"Creates two boxes and a square based pyramid, described in master frame.\n\n");
332 MyGeom * myGeom =
new MyGeom;
Use this attribute class when an object should have 3D capabilities.
void SetLocalMasterIdentity()
Set kRaw tessellation section of buffer with supplied sizes.
void ClearSectionsValid()
Clear any sections marked valid.
virtual void Draw(Option_t *option="")
Default Draw method for all objects.
#define ClassDef(name, id)
virtual int CompileMacro(const char *filename, Option_t *opt="", const char *library_name="", const char *build_dir="", UInt_t dirmode=0)
This method compiles and loads a shared library containing the code from the file "filename"...
Abstract 3D shapes viewer.
void SetSectionsValid(UInt_t mask)
R__EXTERN TSystem * gSystem
void SetAABoundingBox(const Double_t origin[3], const Double_t halfLengths[3])
Set fBBVertex in kBoundingBox section to a axis aligned (local) BB using supplied origin and box half...
virtual Int_t AddObject(const TBuffer3D &buffer, Bool_t *addChildren=0)=0
Bool_t SetRawSizes(UInt_t reqPnts, UInt_t reqPntsCapacity, UInt_t reqSegs, UInt_t reqSegsCapacity, UInt_t reqPols, UInt_t reqPolsCapacity)
Set kRaw tessellation section of buffer with supplied sizes.
Generic 3D primitive description class.
virtual void Paint(Option_t *option="")
This method must be overridden if a class wants to paint itself.
ClassImp(TMCParticle) void TMCParticle printf(": p=(%7.3f,%7.3f,%9.3f) ;", fPx, fPy, fPz)
Mother of all ROOT objects.