LibreCAD
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
geocircle.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "cad/const.h"
4 #include "geocoordinate.h"
5 #include "geobase.h"
6 #include <vector>
8 #include "cad/math/equation.h"
9 namespace lc {
10  namespace geo {
11  // TODO: Should Circle be a arc with a start angle of 0 and a stop angle of 2PI ?
12  class Circle : public Base, virtual public Visitable, public Tangentable {
13  public:
14  Circle(const Coordinate& center, double radius);
15 
20  const Coordinate center() const;
21 
26  double radius() const;
27 
33  Coordinate nearestPointOnPath(const Coordinate& coord) const;
34  Coordinate nearestPointOnEntity(const Coordinate& coord) const;
35 
40  const maths::Equation equation() const {
41  return maths::Equation(1., 0.,1., 0., 0., -_radius* _radius).move(_center);
42  }
43 
44  virtual void accept(GeoEntityVisitor &v) const override { v.visit(*this); }
45 
46  virtual std::vector<Coordinate> lineTangentPointsOnEntity(const lc::geo::Coordinate& extPoint) override;
47 
48  private:
49  friend std::ostream& operator<<(std::ostream& os, const Circle& c) {
50  os << "Circle(center=" << c._center << " radius" << c._radius << ")";
51  return os;
52  }
53  private:
55  const double _radius;
56  };
57  }
58 }
Coordinate nearestPointOnEntity(const Coordinate &coord) const
Definition: geocircle.cpp:25
const double _radius
Radius of circle.
Definition: geocircle.h:55
const Coordinate _center
center of cirlce
Definition: geocircle.h:54
double radius() const
returns the radius of the circle.
Definition: geocircle.cpp:17
friend std::ostream & operator<<(std::ostream &os, const Circle &c)
Definition: geocircle.h:49
Definition: cadentity.h:12
Coordinate nearestPointOnPath(const Coordinate &coord) const
returns the nearest Point On Path
Definition: geocircle.cpp:22
Circle(const Coordinate &center, double radius)
Definition: geocircle.cpp:7
virtual void accept(GeoEntityVisitor &v) const override
Definition: geocircle.h:44
const maths::Equation equation() const
Returns equation of the circle.
Definition: geocircle.h:40
virtual std::vector< Coordinate > lineTangentPointsOnEntity(const lc::geo::Coordinate &extPoint) override
Give line tangent points on entity.
Definition: geocircle.cpp:29
const Coordinate center() const
Returns the Center of circle.
Definition: geocircle.cpp:14
const Equation move(const geo::Coordinate &v) const
move the quadratic equation by value V
Definition: equation.cpp:48