5dbde6512203cb4a62e5422a1b908c403b74bc35
Stefan Schuermans initial version, DXFs can b...

Stefan Schuermans authored 11 years ago

1) /* drawing (DXF) to G-code (NGC) converter
2)  * Copyright 2013 Stefan Schuermans <stefan@schuermans.info>
Stefan Schuermans license CC-BY-SA --> GPL (m...

Stefan Schuermans authored 11 years ago

3)  * Copyleft: GNU public license - http://www.gnu.org/copyleft/gpl.html
Stefan Schuermans initial version, DXFs can b...

Stefan Schuermans authored 11 years ago

4)  */
5) 
6) #include <math.h>
7) 
8) #include "point.h"
9) 
10) Point::Point():
11)   mX(0.0),
12)   mY(0.0)
13) {
14) }
15) 
16) Point::Point(double x, double y):
17)   mX(x),
18)   mY(y)
19) {
20) }
21) 
22) double Point::abs_sq() const
23) {
24)   return mX * mX + mY * mY;
25) }
26) 
27) double Point::abs() const
28) {
29)   return sqrt(mX * mX + mY * mY);
30) }
31) 
32) Point Point::operator-() const
33) {
34)   return Point(-mX, -mY);
35) }
36) 
37) Point Point::operator+(const Point &that) const
38) {
39)   return Point(mX + that.mX, mY + that.mY);
40) }
41) 
42) Point Point::operator-(const Point &that) const
43) {
44)   return Point(mX - that.mX, mY - that.mY);
45) }
46) 
47) Point Point::operator*(double factor) const
48) {
49)   return Point(mX * factor, mY * factor);
50) }
51) 
52) Point Point::operator/(double factor) const
53) {
54)   return Point(mX / factor, mY / factor);
55) }
56) 
57) Point &Point::operator+=(const Point &that)
58) {
59)   mX += that.mX;
60)   mY += that.mY;
61)   return *this;
62) }
63) 
64) Point &Point::operator-=(const Point &that)
65) {
66)   mX -= that.mX;
67)   mY -= that.mY;
68)   return *this;
69) }
70) 
71) Point &Point::operator*=(double factor)
72) {
73)   mX *= factor;
74)   mY *= factor;
75)   return *this;
76) }
77) 
78) Point &Point::operator/=(double factor)
79) {
80)   mX /= factor;
81)   mY /= factor;
82)   return *this;
83) }
84) 
Stefan Schuermans implement joining and impro...

Stefan Schuermans authored 11 years ago

85) /**
86)  * @brief check if point is equal to another one
87)  * @param[in] that other point
88)  * @param[in] eqDist maximum distance of two points to be considered equal
89)  */
90) bool Point::equals(const Point &that, double eqDist) const
91) {
92)   return (*this - that).abs_sq() <= eqDist * eqDist;
93) }
94) 
Stefan Schuermans supoort rotation around z axis

Stefan Schuermans authored 11 years ago

95) /**
96)  * @brief rotate around origin
97)  * @param[in] rad angle in radians
98)  * @return rotated point
99)  */
100) Point Point::rotate(double rad) const
101) {
102)   double c = cos(rad);
103)   double s = sin(rad);
104)   double rx = mX * c - mY * s;
105)   double ry = mY * c + mX * s;
106)   return Point(rx, ry);
107) }
108)