MCPcopy Create free account
hub / github.com/OpenPathGuidingLibrary/openpgl / getStatistics

Function getStatistics

openpgl/field/Field.h:685–721  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

683 }
684
685 FieldStatistics *getStatistics() const
686 {
687 FieldStatistics *stats = new FieldStatistics();
688 stats->numCacheRegions = m_regionStorageContainer.size();
689 stats->numCacheRegionsReserved = m_regionStorageContainer.capacity();
690 stats->sizePerCacheRegions = sizeof(RegionStorageType);
691 stats->sizeAllCacheRegionsUsed = sizeof(RegionStorageType) * m_regionStorageContainer.size();
692 stats->sizeAllCacheRegionsReserved = sizeof(RegionStorageType) * m_regionStorageContainer.capacity();
693 stats->timeLastUpdate = m_timeLastUpdate;
694 stats->timeLastUpdateCopySamples = m_timeLastUpdateCopySamples;
695 stats->timeLastUpdateSpatialStructureUpdate = m_timeLastUpdateSpatialStructureUpdate;
696 stats->timeLastUpdateDirectionalDistriubtionUpdate = m_timeLastUpdateDirectionalDistriubtionUpdate;
697
698 stats->spatialStructureStatistics = m_spatialSubdiv.getStatistics();
699
700 stats->directionalDistributionStatistics.sizePerDistribution = sizeof(DirectionalDistribution);
701 stats->directionalDistributionStatistics.minNumberOfComponents = 1e10f;
702 stats->directionalDistributionStatistics.maxNumberOfComponents = 0.0f;
703 stats->directionalDistributionStatistics.averageNumberOfComponents = 0.0f;
704 stats->directionalDistributionStatistics.secondMomentNumberOfComponents = 0.0f;
705
706 int numDistributions = m_regionStorageContainer.size();
707 for (int i = 0; i < numDistributions; i++)
708 {
709 int numDistributionComponents = m_regionStorageContainer[i].first.distribution.getNumComponents();
710 stats->directionalDistributionStatistics.minNumberOfComponents =
711 std::min(stats->directionalDistributionStatistics.minNumberOfComponents, (float)numDistributionComponents);
712 stats->directionalDistributionStatistics.maxNumberOfComponents =
713 std::max(stats->directionalDistributionStatistics.maxNumberOfComponents, (float)numDistributionComponents);
714 stats->directionalDistributionStatistics.averageNumberOfComponents += numDistributionComponents;
715 stats->directionalDistributionStatistics.secondMomentNumberOfComponents += numDistributionComponents * numDistributionComponents;
716 }
717 stats->directionalDistributionStatistics.averageNumberOfComponents /= float(numDistributions);
718 stats->directionalDistributionStatistics.secondMomentNumberOfComponents /= float(numDistributions);
719 stats->directionalDistributionStatistics.secondMomentNumberOfComponents = std::sqrt(stats->directionalDistributionStatistics.secondMomentNumberOfComponents);
720 return stats;
721 }
722
723 private:
724 bool m_isSurface{true};

Callers

nothing calls this directly

Calls 7

getStatisticsMethod · 0.80
minFunction · 0.50
maxFunction · 0.50
sqrtFunction · 0.50
sizeMethod · 0.45
capacityMethod · 0.45
getNumComponentsMethod · 0.45

Tested by

no test coverage detected