31 #ifndef __AreaCon__areacon__
32 #define __AreaCon__areacon__
39 #include "clipper.hpp"
65 Point(
const double x = INFINITY,
const double y = INFINITY);
115 void Mult(
const double factor);
590 void CalculatePartition(
bool WriteToFile, std::string filename_partition =
"", std::string filename_centers =
"" );
632 void CleanCovering(
const double tolerance,
const long int &mult);
double GradientStepCenter(const std::vector< double > &volumes)
Definition: areacon.cpp:1024
std::vector< double > CalculateVolumes(void)
Definition: areacon.cpp:1101
void SetNewRegion(const Poly Region, const int Nx=0, const int Ny=0, const std::vector< double > Values={})
Definition: areacon.cpp:350
std::vector< bool > GridInRegion
Definition: areacon.h:490
std::vector< double > Coefficient_d
Definition: areacon.h:324
Poly GetRegion(void) const
Definition: areacon.h:434
void GradientStepWeights(const std::vector< double > &volumes, const DelaunayGraph &SharedEdges)
Definition: areacon.cpp:1057
bool AreBetween(const Point Test1, const Point Test2) const
Definition: areacon.cpp:43
std::vector< Poly > GetCovering(void)
Definition: areacon.h:575
double Unweighted_Area
Definition: areacon.h:326
void InitializePartition(std::vector< Point > Centers={}, std::vector< double > Weights={})
Definition: areacon.cpp:712
int Nx
Definition: areacon.h:480
std::vector< Point > GetVertices(void) const
Definition: areacon.cpp:133
const int max_iterations_centers
Definition: areacon.h:375
int Ny
Definition: areacon.h:481
void Setdxy(void)
Definition: areacon.cpp:375
static bool IsEqual(const Point Test1, const Point Test2)
Definition: areacon.cpp:45
int GetNVertices(void) const
Definition: areacon.cpp:134
const double weights_step
Definition: areacon.h:370
std::vector< double > Inty
Definition: areacon.h:325
const double volume_tolerance
Definition: areacon.h:372
double GetVolumeLowerBound(void)
Definition: areacon.cpp:370
Point *** Graph
Definition: areacon.h:311
double Volume_Lower_Bound
Definition: areacon.h:488
std::vector< double > Values
Definition: areacon.h:489
void CalculatePartition(bool WriteToFile, std::string filename_partition="", std::string filename_centers="")
Definition: areacon.cpp:1108
int GetNx(void) const
Definition: areacon.h:426
const double Robustness_Constant
Definition: areacon.h:378
Point(const double x=INFINITY, const double y=INFINITY)
Definition: areacon.cpp:36
static std::vector< Point > FindCollinearIntersection(const Point p1, const Point p2, const Point p3, const Point p4)
Definition: areacon.cpp:102
void CheckParameterSizes(void)
Definition: areacon.cpp:352
void CheckParameters(void) const
Definition: areacon.cpp:303
void Mult(const double factor)
Definition: areacon.cpp:44
std::vector< double > GetWeights(void)
Definition: areacon.h:583
const double centers_step
Definition: areacon.h:371
Definition: areacon.h:257
~Mult_Array(void)
Definition: areacon.cpp:242
static double Distance(const Point Test1, const Point Test2)
Definition: areacon.cpp:46
Definition: areacon.h:393
static Point AddPoints(const Point Test1, const Point Test2)
Definition: areacon.cpp:49
void SetVolumeLowerBound(const double VolumeLowerBound)
Definition: areacon.cpp:367
double CalculateError(const std::vector< double > &volumes)
Definition: areacon.cpp:1093
double maxx
Definition: areacon.h:486
void SetExtrema(void)
Definition: areacon.cpp:349
Poly(std::vector< Point > Vertices={})
Definition: areacon.cpp:132
double PerpDistanceToLine(const Point Test1, const Point Test2) const
Definition: areacon.cpp:41
Definition: areacon.h:543
std::vector< double > Coefficient_c
Definition: areacon.h:324
std::vector< Point > GetCenters(void)
Definition: areacon.h:579
int GetNy(void) const
Definition: areacon.h:430
double miny
Definition: areacon.h:485
const double convergence_criterion
Definition: areacon.h:373
Density Prior
Definition: areacon.h:601
void GetExtrema(double &minx, double &miny, double &maxx, double &maxy) const
Definition: areacon.cpp:135
void InitializePoly(void)
Definition: areacon.cpp:172
double InterpolateValue(const Point &Test) const
Definition: areacon.cpp:396
double minx
Definition: areacon.h:240
void CreateIntegralCoefficients(void)
Definition: areacon.cpp:431
double y
Definition: areacon.h:56
double dx
Definition: areacon.h:482
void SetVertices(const std::vector< Point > Vertices, const bool GetExtrema=true)
Definition: areacon.cpp:136
Definition: areacon.h:320
Int_Params Integral
Definition: areacon.h:491
Definition: areacon.h:350
double CreateIntegralVector(void)
Definition: areacon.cpp:472
DelaunayGraph(const int NRegions)
Definition: areacon.cpp:251
void FlipDirection(void)
Definition: areacon.cpp:40
double dy
Definition: areacon.h:483
bool CreateDefaultCenters(const Poly Region, const double multiplier)
Definition: areacon.cpp:681
std::vector< double > Coefficient_a
Definition: areacon.h:324
void SetPartitionVariables(int NRegions=0, Density Prior=Density(), std::vector< double > desired_area={})
Definition: areacon.cpp:646
int NRegions
Definition: areacon.h:602
void CleanCovering(const double tolerance, const long int &mult)
Definition: areacon.cpp:922
int NPoly
Definition: areacon.h:245
std::vector< double > desired_area
Definition: areacon.h:600
Point CalculateCentroid(const Poly Region, const double &Volume) const
Definition: areacon.cpp:596
std::vector< double > Coefficient_b
Definition: areacon.h:324
static double Robustness_Constant
Definition: areacon.h:58
Poly Region
Definition: areacon.h:479
Definition: areacon.h:203
static Point FindPointAlongLine(const Point Test1, const Point Test2, const double distance)
Definition: areacon.cpp:47
const int max_iterations_volume
Definition: areacon.h:374
void GetExtrema(double &minx, double &miny, double &maxx, double &maxy) const
Definition: areacon.h:447
const double line_int_step
Definition: areacon.h:369
double minx
Definition: areacon.h:484
std::vector< double > Weights
Definition: areacon.h:596
std::vector< double > Int
Definition: areacon.h:325
std::vector< double > Intx
Definition: areacon.h:325
Point FindPerpDirection(const Point Test, const double Norm) const
Definition: areacon.cpp:39
~DelaunayGraph()
Definition: areacon.cpp:260
const double Volume_Lower_Bound
Definition: areacon.h:377
Definition: areacon.h:288
void CheckParameters(void)
Definition: areacon.cpp:324
bool pnpoly(const Point Test) const
Definition: areacon.cpp:148
Parameters(const double line_int_step=0.1, const double weights_step=0.1, const double centers_step=1, const double volume_tolerance=0.002, const double convergence_criterion=0.02, const int max_iterations_volume=200, const int max_iterations_centers=500, const double Volume_Lower_Bound=10e-6, const double Robustness_Constant=10e-8)
Definition: areacon.cpp:323
double ** Array
Definition: areacon.h:279
void SetParameters(const int Nx, const int Ny, const std::vector< double > Values)
Definition: areacon.cpp:386
void CheckParams(void)
Definition: areacon.cpp:648
double LineIntegral(double spacing, const Point &p1, const Point &p2) const
Definition: areacon.cpp:529
void CreateDelaunayGraph(DelaunayGraph &Delaunay) const
Definition: areacon.cpp:959
Density()
Definition: areacon.cpp:347
const int N
Definition: areacon.h:280
Point AddPoint(const Point Test) const
Definition: areacon.cpp:38
Point ConvertIndextoWorld(const int ii) const
Definition: areacon.cpp:351
bool CreatePowerDiagram(void)
Definition: areacon.cpp:743
Int_Params GetIntegral(void) const
Definition: areacon.h:442
const Parameters Alg_Params
Definition: areacon.h:599
std::vector< Point > Centers
Definition: areacon.h:594
double maxx
Definition: areacon.h:242
double CalculateWeightedArea(const Poly Region) const
Definition: areacon.cpp:549
double Norm() const
Definition: areacon.cpp:37
void NormalizeIntegralVector(const double &Total)
Definition: areacon.cpp:505
Mult_Array(const int N)
Definition: areacon.cpp:214
std::vector< Poly > Covering
Definition: areacon.h:595
bool AreCollinear(const Point Test1, const Point Test2) const
Definition: areacon.cpp:42
Partition(int NRegions=0, Density Prior=Density(), std::vector< double > desired_area={}, Parameters Alg_Params=Parameters())
Definition: areacon.cpp:645
std::vector< bool > GetGridInRegion(void) const
Definition: areacon.h:438
const int NRegions
Definition: areacon.h:312
double x
Definition: areacon.h:55
std::vector< Point > Vertices
Definition: areacon.h:244
Mult_Array & operator=(const Mult_Array &obj)
Definition: areacon.cpp:229
double miny
Definition: areacon.h:241
void PreprocessIntegral(void)
Definition: areacon.cpp:523
double maxy
Definition: areacon.h:243
Int_Params(std::vector< double > Coefficient_a={}, std::vector< double > Coefficient_b={}, std::vector< double > Coefficient_c={}, std::vector< double > Coefficient_d={}, std::vector< double > Int={}, std::vector< double > Intx={}, std::vector< double > Inty={}, double UnweightedArea=0)
Definition: areacon.cpp:300
double maxy
Definition: areacon.h:487
DelaunayGraph & operator=(const DelaunayGraph &obj)
Definition: areacon.cpp:281