ACF $AcfVersion:0$
CCircle.h
Go to the documentation of this file.
1// SPDX-License-Identifier: LGPL-2.1-or-later OR GPL-2.0-or-later OR GPL-3.0-or-later OR LicenseRef-ACF-Commercial
2#pragma once
3
4
5#include <i2d/CPosition2d.h>
6#include <i2d/CLine2d.h>
7
8
9namespace i2d
10{
11
12
13class CRectangle;
14class CPolygon;
15
16
21class CCircle: public CPosition2d
22{
23public:
25
26 static QByteArray GetTypeName();
27
29 CCircle(double radius, const CVector2d& center);
30
31 double GetRadius() const;
32 void SetRadius(double radius);
33
34 bool operator==(const CCircle& circle) const;
35 bool operator!=(const CCircle& circle) const;
36
41 virtual bool ConvertToPolygon(i2d::CPolygon& result, int segmentsCount = 0) const;
42
48 bool IsIntersectedBy(const CCircle& circle, bool isFilled = false) const;
49
55 bool IsIntersectedBy(const CLine2d& line, bool isFilled = false) const;
56
65 int GetIntersectionAlphas(const CLine2d& line, double result[2]) const;
66
74 int GetIntersectionPoints(const CLine2d& line, i2d::CVector2d& result1, i2d::CVector2d& result2) const;
75
76 // reimplemented (i2d::IObject2d)
77 virtual CRectangle GetBoundingBox() const override;
78 virtual bool Transform(
79 const ITransformation2d& transformation,
81 double* errorFactorPtr = NULL) override;
82 virtual bool InvTransform(
83 const ITransformation2d& transformation,
85 double* errorFactorPtr = NULL) override;
86 virtual bool GetTransformed(
87 const ITransformation2d& transformation,
88 IObject2d& result,
90 double* errorFactorPtr = NULL) const override;
91 virtual bool GetInvTransformed(
92 const ITransformation2d& transformation,
93 IObject2d& result,
95 double* errorFactorPtr = NULL) const override;
96
97 // reimplemented (iser::IObject)
98 virtual QByteArray GetFactoryId() const override;
99
100 // reimplemented istd::IChangeable
101 virtual int GetSupportedOperations() const override;
102 virtual bool CopyFrom(const IChangeable& object, CompatibilityMode mode = CM_WITHOUT_REFS) override;
104
105 // reimplemented (iser::ISerializable)
106 virtual bool Serialize(iser::IArchive& archive) override;
107
108protected:
109 double m_radius;
110};
111
112
113// inline methods
114
115inline double CCircle::GetRadius() const
116{
117 return m_radius;
118}
119
120
121} // namespace i2d
122
123
124
125
Definition of graphical circle object.
Definition CCircle.h:22
virtual bool GetTransformed(const ITransformation2d &transformation, IObject2d &result, ITransformation2d::ExactnessMode mode=ITransformation2d::EM_NONE, double *errorFactorPtr=NULL) const override
Calulate transformation of the object into second one.
virtual bool ConvertToPolygon(i2d::CPolygon &result, int segmentsCount=0) const
Performs conversion of the circle splitting it to segmentsCount segments to the polygon result.
bool operator!=(const CCircle &circle) const
static QByteArray GetTypeName()
void SetRadius(double radius)
virtual bool InvTransform(const ITransformation2d &transformation, ITransformation2d::ExactnessMode mode=ITransformation2d::EM_NONE, double *errorFactorPtr=NULL) override
Do inverse transformation of this object.
bool IsIntersectedBy(const CCircle &circle, bool isFilled=false) const
Check if this circle is intersected by another circle (or disk).
virtual bool GetInvTransformed(const ITransformation2d &transformation, IObject2d &result, ITransformation2d::ExactnessMode mode=ITransformation2d::EM_NONE, double *errorFactorPtr=NULL) const override
Calulate inverse transformation of the object into second one.
int GetIntersectionPoints(const CLine2d &line, i2d::CVector2d &result1, i2d::CVector2d &result2) const
Get points of intersection circle by line.
virtual bool Serialize(iser::IArchive &archive) override
Load or store state of this object as a archive stream.
double m_radius
Definition CCircle.h:109
virtual QByteArray GetFactoryId() const override
CPosition2d BaseClass
Definition CCircle.h:24
double GetRadius() const
Definition CCircle.h:115
int GetIntersectionAlphas(const CLine2d &line, double result[2]) const
Get points of intersection circle by line.
bool operator==(const CCircle &circle) const
bool IsIntersectedBy(const CLine2d &line, bool isFilled=false) const
Check if this circle is intersected by line.
virtual int GetSupportedOperations() const override
Get set of flags for supported operations.
virtual bool CopyFrom(const IChangeable &object, CompatibilityMode mode=CM_WITHOUT_REFS) override
virtual CRectangle GetBoundingBox() const override
Get bounding box of this shape.
CCircle(double radius, const CVector2d &center)
virtual bool Transform(const ITransformation2d &transformation, ITransformation2d::ExactnessMode mode=ITransformation2d::EM_NONE, double *errorFactorPtr=NULL) override
Transform this object using some transformation.
virtual istd::TUniqueInterfacePtr< istd::IChangeable > CloneMe(CompatibilityMode mode=CM_WITHOUT_REFS) const override
Make a copy of this object.
Definition of a line in 2D-space.
Definition CLine2d.h:25
Definition of the data model for a polygon.
Definition CPolygon.h:20
Definition of graphical point object.
Definition CPosition2d.h:18
Definition of rectangle area orthogonal to axis of coordination system.
Definition CRectangle.h:27
Definition of position or mathematical vector on 2D plane.
Definition CVector2d.h:29
Common interface for describing the 2D-objects.
Definition IObject2d.h:26
Common interface for all calibration objects.
@ EM_NONE
There are no preferences, should be automatically selected.
Represents an input/output persistence archive for object serialization.
Definition IArchive.h:164
CompatibilityMode
Control how relationship betweeen objects are interpreted.
@ CM_WITHOUT_REFS
External references are simple ignored.
Unique ownership smart pointer for interface types.
#define NULL
Definition istd.h:74
Contains the 2D objects.
Definition CAffine2d.h:11