LibreCAD
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
geocircle.cpp
Go to the documentation of this file.
2 #include "geocircle.h"
3 
4 using namespace lc;
5 using namespace geo;
6 
7 Circle::Circle(const Coordinate& center, double radius) : Base(), _center(center), _radius(radius) {
8  if (radius < 0.0) {
9  throw "Invalid radius";
10  }
11 
12 }
13 
14 const Coordinate Circle::center() const {
15  return _center;
16 }
17 double Circle::radius() const {
18  return _radius;
19 }
20 
21 
23  return _center + Coordinate((coord - _center).angle()) * _radius;
24 }
26  return _center + Coordinate((coord - _center).angle()) * _radius;
27 }
28 
29 std::vector<Coordinate> Circle::lineTangentPointsOnEntity(const lc::geo::Coordinate& extPoint) {
30  double distance = extPoint.distanceTo(center());
31  double tangentLength = sqrt(distance * distance - _radius * _radius);
32 
33  geo::Circle intersectionCircle(extPoint, tangentLength);
35  intersect(*this, intersectionCircle);
36  return intersect.result();
37 }
Coordinate nearestPointOnEntity(const Coordinate &coord) const
Definition: geocircle.cpp:25
const double _radius
Radius of circle.
Definition: geocircle.h:55
calculate the intersection pojnts of 2 entities
Definition: intersect.h:35
const Coordinate _center
center of cirlce
Definition: geocircle.h:54
double radius() const
returns the radius of the circle.
Definition: geocircle.cpp:17
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
#define LCTOLERANCE
Definition: const.h:6
std::vector< geo::Coordinate > result() const
Definition: intersect.cpp:20
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
double distanceTo(const geo::Coordinate &c) const