Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/freestyle/intern/view_map/Pow23GridDensityProvider.cpp')
-rw-r--r--source/blender/freestyle/intern/view_map/Pow23GridDensityProvider.cpp122
1 files changed, 66 insertions, 56 deletions
diff --git a/source/blender/freestyle/intern/view_map/Pow23GridDensityProvider.cpp b/source/blender/freestyle/intern/view_map/Pow23GridDensityProvider.cpp
index 858e6b649eb..7e7f4e14882 100644
--- a/source/blender/freestyle/intern/view_map/Pow23GridDensityProvider.cpp
+++ b/source/blender/freestyle/intern/view_map/Pow23GridDensityProvider.cpp
@@ -25,90 +25,100 @@
namespace Freestyle {
-Pow23GridDensityProvider::Pow23GridDensityProvider(OccluderSource& source, const real proscenium[4], unsigned numFaces)
-: GridDensityProvider(source), numFaces(numFaces)
+Pow23GridDensityProvider::Pow23GridDensityProvider(OccluderSource &source,
+ const real proscenium[4],
+ unsigned numFaces)
+ : GridDensityProvider(source), numFaces(numFaces)
{
- initialize (proscenium);
+ initialize(proscenium);
}
-Pow23GridDensityProvider::Pow23GridDensityProvider(OccluderSource& source, const BBox<Vec3r>& bbox,
- const GridHelpers::Transform& transform, unsigned numFaces)
-: GridDensityProvider(source), numFaces(numFaces)
+Pow23GridDensityProvider::Pow23GridDensityProvider(OccluderSource &source,
+ const BBox<Vec3r> &bbox,
+ const GridHelpers::Transform &transform,
+ unsigned numFaces)
+ : GridDensityProvider(source), numFaces(numFaces)
{
- real proscenium[4];
- calculateQuickProscenium(transform, bbox, proscenium);
+ real proscenium[4];
+ calculateQuickProscenium(transform, bbox, proscenium);
- initialize (proscenium);
+ initialize(proscenium);
}
-Pow23GridDensityProvider::Pow23GridDensityProvider(OccluderSource& source, unsigned numFaces)
-: GridDensityProvider(source), numFaces(numFaces)
+Pow23GridDensityProvider::Pow23GridDensityProvider(OccluderSource &source, unsigned numFaces)
+ : GridDensityProvider(source), numFaces(numFaces)
{
- real proscenium[4];
- calculateOptimalProscenium(source, proscenium);
+ real proscenium[4];
+ calculateOptimalProscenium(source, proscenium);
- initialize (proscenium);
+ initialize(proscenium);
}
-Pow23GridDensityProvider::~Pow23GridDensityProvider () {}
+Pow23GridDensityProvider::~Pow23GridDensityProvider()
+{
+}
void Pow23GridDensityProvider::initialize(const real proscenium[4])
{
- float prosceniumWidth = (proscenium[1] - proscenium[0]);
- float prosceniumHeight = (proscenium[3] - proscenium[2]);
- real cellArea = prosceniumWidth * prosceniumHeight / pow(numFaces, 2.0f / 3.0f);
- if (G.debug & G_DEBUG_FREESTYLE) {
- cout << prosceniumWidth << " x " << prosceniumHeight << " grid with cells of area " << cellArea << "." << endl;
- }
-
- _cellSize = sqrt(cellArea);
- // Now we know how many cells make each side of our grid
- _cellsX = ceil(prosceniumWidth / _cellSize);
- _cellsY = ceil(prosceniumHeight / _cellSize);
- if (G.debug & G_DEBUG_FREESTYLE) {
- cout << _cellsX << "x" << _cellsY << " cells of size " << _cellSize << " square." << endl;
- }
-
- // Make sure the grid exceeds the proscenium by a small amount
- float safetyZone = 0.1;
- if (_cellsX * _cellSize < prosceniumWidth * (1.0 + safetyZone)) {
- _cellsX = ceil(prosceniumWidth * (1.0 + safetyZone) / _cellSize);
- }
- if (_cellsY * _cellSize < prosceniumHeight * (1.0 + safetyZone)) {
- _cellsY = ceil(prosceniumHeight * (1.0 + safetyZone) / _cellSize);
- }
- if (G.debug & G_DEBUG_FREESTYLE) {
- cout << _cellsX << "x" << _cellsY << " cells of size " << _cellSize << " square." << endl;
- }
-
- // Find grid origin
- _cellOrigin[0] = ((proscenium[0] + proscenium[1]) / 2.0) - (_cellsX / 2.0) * _cellSize;
- _cellOrigin[1] = ((proscenium[2] + proscenium[3]) / 2.0) - (_cellsY / 2.0) * _cellSize;
+ float prosceniumWidth = (proscenium[1] - proscenium[0]);
+ float prosceniumHeight = (proscenium[3] - proscenium[2]);
+ real cellArea = prosceniumWidth * prosceniumHeight / pow(numFaces, 2.0f / 3.0f);
+ if (G.debug & G_DEBUG_FREESTYLE) {
+ cout << prosceniumWidth << " x " << prosceniumHeight << " grid with cells of area " << cellArea
+ << "." << endl;
+ }
+
+ _cellSize = sqrt(cellArea);
+ // Now we know how many cells make each side of our grid
+ _cellsX = ceil(prosceniumWidth / _cellSize);
+ _cellsY = ceil(prosceniumHeight / _cellSize);
+ if (G.debug & G_DEBUG_FREESTYLE) {
+ cout << _cellsX << "x" << _cellsY << " cells of size " << _cellSize << " square." << endl;
+ }
+
+ // Make sure the grid exceeds the proscenium by a small amount
+ float safetyZone = 0.1;
+ if (_cellsX * _cellSize < prosceniumWidth * (1.0 + safetyZone)) {
+ _cellsX = ceil(prosceniumWidth * (1.0 + safetyZone) / _cellSize);
+ }
+ if (_cellsY * _cellSize < prosceniumHeight * (1.0 + safetyZone)) {
+ _cellsY = ceil(prosceniumHeight * (1.0 + safetyZone) / _cellSize);
+ }
+ if (G.debug & G_DEBUG_FREESTYLE) {
+ cout << _cellsX << "x" << _cellsY << " cells of size " << _cellSize << " square." << endl;
+ }
+
+ // Find grid origin
+ _cellOrigin[0] = ((proscenium[0] + proscenium[1]) / 2.0) - (_cellsX / 2.0) * _cellSize;
+ _cellOrigin[1] = ((proscenium[2] + proscenium[3]) / 2.0) - (_cellsY / 2.0) * _cellSize;
}
Pow23GridDensityProviderFactory::Pow23GridDensityProviderFactory(unsigned numFaces)
-: numFaces(numFaces)
+ : numFaces(numFaces)
{
}
-Pow23GridDensityProviderFactory::~Pow23GridDensityProviderFactory () {}
+Pow23GridDensityProviderFactory::~Pow23GridDensityProviderFactory()
+{
+}
-AutoPtr<GridDensityProvider>
-Pow23GridDensityProviderFactory::newGridDensityProvider(OccluderSource& source, const real proscenium[4])
+AutoPtr<GridDensityProvider> Pow23GridDensityProviderFactory::newGridDensityProvider(
+ OccluderSource &source, const real proscenium[4])
{
- return AutoPtr<GridDensityProvider>(new Pow23GridDensityProvider(source, proscenium, numFaces));
+ return AutoPtr<GridDensityProvider>(new Pow23GridDensityProvider(source, proscenium, numFaces));
}
-AutoPtr<GridDensityProvider>
-Pow23GridDensityProviderFactory::newGridDensityProvider(OccluderSource& source, const BBox<Vec3r>& bbox,
- const GridHelpers::Transform& transform)
+AutoPtr<GridDensityProvider> Pow23GridDensityProviderFactory::newGridDensityProvider(
+ OccluderSource &source, const BBox<Vec3r> &bbox, const GridHelpers::Transform &transform)
{
- return AutoPtr<GridDensityProvider>(new Pow23GridDensityProvider(source, bbox, transform, numFaces));
+ return AutoPtr<GridDensityProvider>(
+ new Pow23GridDensityProvider(source, bbox, transform, numFaces));
}
-AutoPtr<GridDensityProvider> Pow23GridDensityProviderFactory::newGridDensityProvider(OccluderSource& source)
+AutoPtr<GridDensityProvider> Pow23GridDensityProviderFactory::newGridDensityProvider(
+ OccluderSource &source)
{
- return AutoPtr<GridDensityProvider>(new Pow23GridDensityProvider(source, numFaces));
+ return AutoPtr<GridDensityProvider>(new Pow23GridDensityProvider(source, numFaces));
}
} /* namespace Freestyle */