28 AverageAreaGridDensityProvider::AverageAreaGridDensityProvider(
OccluderSource &source,
29 const real proscenium[4],
33 initialize(proscenium, sizeFactor);
36 AverageAreaGridDensityProvider::AverageAreaGridDensityProvider(
46 initialize(proscenium, sizeFactor);
49 AverageAreaGridDensityProvider::AverageAreaGridDensityProvider(
OccluderSource &source,
56 initialize(proscenium, sizeFactor);
59 void AverageAreaGridDensityProvider::initialize(
const real proscenium[4],
real sizeFactor)
61 float prosceniumWidth = (proscenium[1] - proscenium[0]);
62 float prosceniumHeight = (proscenium[3] - proscenium[2]);
65 unsigned numFaces = 0;
74 cout <<
"Total area: " << cellArea <<
". Number of faces: " << numFaces <<
"." << endl;
77 cellArea *= sizeFactor;
79 cout <<
"Building grid with average area " << cellArea << endl;
83 unsigned maxCells = 931;
86 cout <<
"Scene-dependent cell size (" <<
_cellSize <<
" square) is too small." << endl;
98 float safetyZone = 0.1f;
115 : sizeFactor(sizeFactor)
Class to define a cell grid surrounding the projected image of a scene.
SIMD_FORCE_INLINE btVector3 transform(const btVector3 &point) const
AutoPtr< GridDensityProvider > newGridDensityProvider(OccluderSource &source, const real proscenium[4])
AverageAreaGridDensityProviderFactory(real sizeFactor)
static void calculateOptimalProscenium(OccluderSource &source, real proscenium[4])
static void calculateQuickProscenium(const GridHelpers::Transform &transform, const BBox< Vec3r > &bbox, real proscenium[4])
Polygon3r & getGridSpacePolygon()
ccl_device_inline float3 ceil(const float3 &a)