18AverageAreaGridDensityProvider::AverageAreaGridDensityProvider(
OccluderSource &source,
19 const real proscenium[4],
26AverageAreaGridDensityProvider::AverageAreaGridDensityProvider(
39AverageAreaGridDensityProvider::AverageAreaGridDensityProvider(
OccluderSource &source,
49void AverageAreaGridDensityProvider::initialize(
const real proscenium[4],
real sizeFactor)
51 float prosceniumWidth = (proscenium[1] - proscenium[0]);
52 float prosceniumHeight = (proscenium[3] - proscenium[2]);
59 poly.getBBox(
min, max);
60 cellArea += (max[0] -
min[0]) * (max[1] -
min[1]);
64 cout <<
"Total area: " << cellArea <<
". Number of faces: " << numFaces <<
"." << endl;
67 cellArea *= sizeFactor;
69 cout <<
"Building grid with average area " << cellArea << endl;
74 if (std::max(prosceniumWidth, prosceniumHeight) /
_cellSize > maxCells) {
76 cout <<
"Scene-dependent cell size (" <<
_cellSize <<
" square) is too small." << endl;
78 _cellSize = std::max(prosceniumWidth, prosceniumHeight) / maxCells;
88 float safetyZone = 0.1f;
105 : sizeFactor(sizeFactor)
Class to define a cell grid surrounding the projected image of a scene.
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)