27class GridDensityProvider {
29 GridDensityProvider(
const GridDensityProvider &other);
30 GridDensityProvider &operator=(
const GridDensityProvider &other);
58 throw new out_of_range(
"GridDensityProvider::cellOrigin can take only indexes of 0 or 1.");
66 const Vec3r &initialPoint =
source.getGridSpacePolygon().getVertices()[0];
67 proscenium[0] = proscenium[1] = initialPoint[0];
68 proscenium[2] = proscenium[3] = initialPoint[1];
75 cout <<
"Proscenium: (" << proscenium[0] <<
", " << proscenium[1] <<
", " << proscenium[2]
76 <<
", " << proscenium[3] <<
")" << endl;
98 proscenium[0] = std::min(std::min(std::min(p1.
x(), p2.
x()), std::min(p3.
x(), p4.
x())),
99 std::min(std::min(p5.
x(), p6.
x()), std::min(p7.
x(), p8.
x())));
100 proscenium[1] = std::max(std::max(std::max(p1.
x(), p2.
x()), std::max(p3.
x(), p4.
x())),
101 std::max(std::max(p5.
x(), p6.
x()), std::max(p7.
x(), p8.
x())));
102 proscenium[2] = std::min(std::min(std::min(p1.
y(), p2.
y()), std::min(p3.
y(), p4.
y())),
103 std::min(std::min(p5.
y(), p6.
y()), std::min(p7.
y(), p8.
y())));
104 proscenium[3] = std::max(std::max(std::max(p1.
y(), p2.
y()), std::max(p3.
y(), p4.
y())),
105 std::max(std::max(p5.
y(), p6.
y()), std::max(p7.
y(), p8.
y())));
107 cout <<
"Proscenium: " << proscenium[0] <<
", " << proscenium[1] <<
", " << proscenium[2]
108 <<
", " << proscenium[3] << endl;
118 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:GridDensityProvider")
121class GridDensityProviderFactory {
124 GridDensityProviderFactory &operator=(
const GridDensityProviderFactory &other);
130 const real proscenium[4]) = 0;
141 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:GridDensityProviderFactory")
Utility header for auto_ptr/unique_ptr selection.
A class to hold a bounding box.
Read Guarded memory(de)allocation.
Class to define a cell grid surrounding the projected image of a scene.
SIMD_FORCE_INLINE btVector3 transform(const btVector3 &point) const
const Point & getMin() const
const Point & getMax() const
virtual AutoPtr< GridDensityProvider > newGridDensityProvider(OccluderSource &source, const real proscenium[4])=0
GridDensityProviderFactory()
virtual AutoPtr< GridDensityProvider > newGridDensityProvider(OccluderSource &source)=0
virtual AutoPtr< GridDensityProvider > newGridDensityProvider(OccluderSource &source, const BBox< Vec3r > &bbox, const GridHelpers::Transform &transform)=0
virtual ~GridDensityProviderFactory()
static void calculateOptimalProscenium(OccluderSource &source, real proscenium[4])
virtual ~GridDensityProvider()
GridDensityProvider(OccluderSource &source)
float cellOrigin(int index)
static void calculateQuickProscenium(const GridHelpers::Transform &transform, const BBox< Vec3r > &bbox, real proscenium[4])
VecMat::Vec3< real > Vec3r
void expandProscenium(real proscenium[4], const Polygon3r &polygon)