LibreCAD
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
lc::geo::Circle Class Reference

#include <geocircle.h>

Inheritance diagram for lc::geo::Circle:
Collaboration diagram for lc::geo::Circle:

Public Member Functions

 Circle (const Coordinate &center, double radius)
 
const Coordinate center () const
 Returns the Center of circle. More...
 
double radius () const
 returns the radius of the circle. More...
 
Coordinate nearestPointOnPath (const Coordinate &coord) const
 returns the nearest Point On Path More...
 
Coordinate nearestPointOnEntity (const Coordinate &coord) const
 
const maths::Equation equation () const
 Returns equation of the circle. More...
 
virtual void accept (GeoEntityVisitor &v) const override
 
virtual std::vector< CoordinatelineTangentPointsOnEntity (const lc::geo::Coordinate &extPoint) override
 Give line tangent points on entity. More...
 
- Public Member Functions inherited from lc::geo::Base
virtual ~Base ()=default
 
- Public Member Functions inherited from lc::Visitable
virtual ~Visitable ()=default
 

Private Attributes

const Coordinate _center
 center of cirlce More...
 
const double _radius
 Radius of circle. More...
 

Friends

std::ostream & operator<< (std::ostream &os, const Circle &c)
 

Detailed Description

Definition at line 12 of file geocircle.h.

Constructor & Destructor Documentation

Circle::Circle ( const Coordinate center,
double  radius 
)

Definition at line 7 of file geocircle.cpp.

7  : Base(), _center(center), _radius(radius) {
8  if (radius < 0.0) {
9  throw "Invalid radius";
10  }
11 
12 }
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

Member Function Documentation

virtual void lc::geo::Circle::accept ( GeoEntityVisitor v) const
inlineoverridevirtual

Implements lc::Visitable.

Reimplemented in lc::entity::Circle.

Definition at line 44 of file geocircle.h.

44 { v.visit(*this); }
const Coordinate Circle::center ( ) const

Returns the Center of circle.

Returns
lc::geo::Coordinate Center.

Definition at line 14 of file geocircle.cpp.

14  {
15  return _center;
16 }
const Coordinate _center
center of cirlce
Definition: geocircle.h:54
const maths::Equation lc::geo::Circle::equation ( ) const
inline

Returns equation of the circle.

Returns
Equation

Definition at line 40 of file geocircle.h.

40  {
41  return maths::Equation(1., 0.,1., 0., 0., -_radius* _radius).move(_center);
42  }
const double _radius
Radius of circle.
Definition: geocircle.h:55
const Coordinate _center
center of cirlce
Definition: geocircle.h:54
std::vector< Coordinate > Circle::lineTangentPointsOnEntity ( const lc::geo::Coordinate extPoint)
overridevirtual

Give line tangent points on entity.

Parameters
extPointFirst point of line tangent
Returns
Vector of tangent end points

Implements Tangentable.

Definition at line 29 of file geocircle.cpp.

29  {
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 }
const double _radius
Radius of circle.
Definition: geocircle.h:55
calculate the intersection pojnts of 2 entities
Definition: intersect.h:35
#define LCTOLERANCE
Definition: const.h:6
const Coordinate center() const
Returns the Center of circle.
Definition: geocircle.cpp:14
double distanceTo(const geo::Coordinate &c) const
Coordinate Circle::nearestPointOnEntity ( const Coordinate coord) const

Definition at line 25 of file geocircle.cpp.

25  {
26  return _center + Coordinate((coord - _center).angle()) * _radius;
27 }
const double _radius
Radius of circle.
Definition: geocircle.h:55
const Coordinate _center
center of cirlce
Definition: geocircle.h:54
Coordinate Circle::nearestPointOnPath ( const Coordinate coord) const

returns the nearest Point On Path

Parameters
lc::geo::Coordinatecoord
Returns
lc::geo::Coordinate

Definition at line 22 of file geocircle.cpp.

22  {
23  return _center + Coordinate((coord - _center).angle()) * _radius;
24 }
const double _radius
Radius of circle.
Definition: geocircle.h:55
const Coordinate _center
center of cirlce
Definition: geocircle.h:54
double Circle::radius ( ) const

returns the radius of the circle.

Returns
Double radius.

Definition at line 17 of file geocircle.cpp.

17  {
18  return _radius;
19 }
const double _radius
Radius of circle.
Definition: geocircle.h:55

Friends And Related Function Documentation

std::ostream& operator<< ( std::ostream &  os,
const Circle c 
)
friend

Definition at line 49 of file geocircle.h.

49  {
50  os << "Circle(center=" << c._center << " radius" << c._radius << ")";
51  return os;
52  }

Member Data Documentation

const Coordinate lc::geo::Circle::_center
private

center of cirlce

Definition at line 54 of file geocircle.h.

const double lc::geo::Circle::_radius
private

Radius of circle.

Definition at line 55 of file geocircle.h.


The documentation for this class was generated from the following files: