// This file is a part of Framsticks SDK. http://www.framsticks.com/ // Copyright (C) 1999-2020 Maciej Komosinski and Szymon Ulatowski. // See LICENSE.txt for details. #ifndef DISTRIBUTION_MEASURE_H #define DISTRIBUTION_MEASURE_H #include "simil-measure-base.h" #include "EMD/emd.h" class SimilMeasureDistribution : public SimilMeasureBase { public: SimilMeasureDistribution(); ~SimilMeasureDistribution(){}; int setParams(std::vector params); void calculateFuns(); void calculateFun(std::pair *fun, Model &sampled); double compareFuns(); double EMD(std::pair *fun1, std::pair *fun2); double density; int samples_num; int bin_num; /// Interface to local parameters Param localpar; protected: std::pair *funs[2]; SolidsShapeTypeModel *sst_models[2]; std::vector (SimilMeasureDistribution::*distribution_fun)(int samples_taken, Model *sampled); void fillPointsWeights(std::pair *fun, feature_t *points, float *weights); double getDistance(); std::vector D2(int samples_taken, Model *sampled); std::vector D1(int samples_taken, Model *sampled); std::vector D3(int samples_taken, Model *sampled); std::vector D4(int samples_taken, Model *sampled); std::vector A3(int samples_taken, Model *sampled); }; #endif /* DISTRIBUTION_MEASURE_H */