1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
|
/// \file VisualizeParallelepiped.h
/// \author: Mihaela Gheata (mihaela.gheata@cern.ch)
#include "VecGeomTest/Visualizer.h"
#include "VecGeom/volumes/utilities/VolumeUtilities.h"
#include "TPolyMarker3D.h"
#include "VecGeom/base/Vector3D.h"
#include "VecGeom/volumes/Parallelepiped.h"
using namespace vecgeom;
int main()
{
constexpr int nSamples = 10000;
SimpleParallelepiped para("parallelepiped", 10, 7, 20, 30, 30, 45);
TPolyMarker3D pm(nSamples);
pm.SetMarkerColor(kRed);
pm.SetMarkerStyle(6);
Inside_t inside;
int nerrors = 0;
for (int i = 0; i < nSamples; ++i) {
Vector3D<Precision> sample;
sample = para.GetUnplacedVolume()->SamplePointOnSurface();
inside = para.Inside(sample);
if (inside != EnumInside::kSurface) nerrors++;
/*
bool contains;
do {
sample = volumeUtilities::SamplePoint(Vector3D<Precision>(4, 4, 10));
sample = para.GetUnplacedVolume()->SamplePointOnSurface();
inside = para.Inside(sample);
contains = para.Contains(sample);
if (inside==kInside && !contains) {
inside = para.Inside(sample);
}
} while (inside != kInside);
*/
pm.SetNextPoint(sample[0], sample[1], sample[2]);
}
Visualizer visualizer;
visualizer.AddVolume(para);
visualizer.AddPoints(pm);
visualizer.Show();
printf("=== nerrors = %d\n", nerrors);
return 0;
}
|