Xinqi Bao's Git

XbSlicer, re-organized the entire project
[XbSlicer.git] / src / Loop.hh
1 #pragma once
2
3 /*
4 @author: Xinqi Bao
5 */
6
7 #include <vector>
8
9 #include "Vec2d.hh"
10
11 class Loop
12 {
13 private:
14 bool completed;
15 double minX, maxX, minY, maxY;
16 double xsum = 0, ysum = 0;
17
18 public:
19 std::vector<Vec2d> head;
20 std::vector<Loop> subLoops;
21 double midX = 0, midY = 0;
22 bool visited = false;
23
24 Loop(Vec2d& p, uint32_t size);
25 bool isCompleted() const;
26 void add(double x, double y);
27 void add(Vec2d* p);
28 void add(Vec2d& p);
29 int size() const;
30 const Vec2d& at(int i) const;
31 const Vec2d& front() const;
32 const Vec2d& back() const;
33 Vec2d& at(int i);
34 Vec2d& front();
35 Vec2d& back();
36 double getminX() const;
37 double getmaxX() const;
38 double getminY() const;
39 double getmaxY() const;
40 double getXsum() const;
41 double getYsum() const;
42 void loopSum();
43 void optimize();
44 bool checkSubLoop(Loop& lp);
45 void print() const;
46 };