19 const real proscenium[4],
21 : GridDensityProvider(
source)
26AverageAreaGridDensityProvider::AverageAreaGridDensityProvider(
31 : GridDensityProvider(
source)
41 : GridDensityProvider(
source)
49void AverageAreaGridDensityProvider::initialize(
const real proscenium[4],
real sizeFactor)
51 float prosceniumWidth = (proscenium[1] - proscenium[0]);
52 float prosceniumHeight = (proscenium[3] - proscenium[2]);
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;
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()
VecMat::Vec3< real > Vec3r
BLI_INLINE std::string & endl()