Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00032
00033 #pragma once
00034
00035 #include "../api_core.h"
00036 #include <vector>
00037 #include "point.h"
00038 #include "circle.h"
00039 #include "rect.h"
00040
00044 class CL_API_CORE CL_PointSetMath
00045 {
00048 public:
00052 static CL_Circlef minimum_enclosing_disc(
00053 const std::vector<CL_Pointf> &points);
00054
00058 static std::vector<CL_Pointf> convex_hull_from_polygon(std::vector<CL_Pointf> &points);
00059
00060 static CL_Rect bounding_box(const std::vector<CL_Pointf> &points);
00061
00065 private:
00066 static void calculate_minimum_enclosing_disc(
00067 CL_Circlef &smalldisc,
00068 const std::vector<CL_Pointf> &points,
00069 int start,
00070 int end);
00071
00072 static void minimum_disc_with_1point(
00073 CL_Circlef &smalldisc,
00074 const std::vector<CL_Pointf> &points,
00075 int start,
00076 unsigned int i);
00077
00078 static void minimum_disc_with_2points(
00079 CL_Circlef &smalldisc,
00080 const std::vector<CL_Pointf> &points,
00081 int start,
00082 unsigned int i,
00083 unsigned int j);
00084
00085 static void minimum_disc_with_3points(
00086 CL_Circlef &smalldisc,
00087 const std::vector<CL_Pointf> &points,
00088 unsigned int i,
00089 unsigned int j,
00090 unsigned int k);
00091
00092 friend class CL_OutlineMath;
00094 };
00095