![]() |
ICF 3.0.5.47
Technical documentation of ICF Libraries
|
Definition of a line in 2D-space. More...
#include <CLine2d.h>
Public Member Functions | |
CLine2d () | |
CLine2d (const CVector2d &p1, const CVector2d &p2) | |
CLine2d (double x1, double y1, double x2, double y2) | |
bool | operator== (const CLine2d &line) const |
bool | operator!= (const CLine2d &line) const |
bool | IsNull () const |
Returns true , if the line has a length equal 0. | |
const CVector2d & | GetPoint1 () const |
Get value of first line point. | |
CVector2d & | GetPoint1Ref () |
Get reference to first line point. | |
void | SetPoint1 (const CVector2d &point) |
Set value of first line point. | |
const CVector2d & | GetPoint2 () const |
Get value of second line point. | |
CVector2d & | GetPoint2Ref () |
Get reference to second line point. | |
void | SetPoint2 (const CVector2d &point) |
Set value of second line point. | |
double | GetSlope () const |
Get slope of this line. | |
double | GetIntercept () const |
Get intercept of this line. | |
bool | IsParallel (const CLine2d &line) const |
Check if this line is parallel to another one. | |
bool | IsIntersectedBy (const CLine2d &line) const |
Check if two lines intersect. | |
bool | GetIntersection (const CLine2d &line, CVector2d &result) const |
Get intersection position of two lines. | |
bool | GetExtendedIntersection (const CLine2d &line, CVector2d &result) const |
Get intersection position of extended lines. | |
double | GetDistance (const CVector2d &position) const |
Get distance from nearest point of this line to specified position. | |
double | GetMaxDistance (const CVector2d &position) const |
Get maximal distance from points of this line to specified position. | |
double | GetExtendedDistance (const CVector2d &position) const |
Get distance from nearest point of extended line to specified position. | |
CVector2d | GetPositionFromAlpha (double alpha) const |
Get position of point using normed 'alpha' value. | |
CVector2d | GetDiffVector () const |
Get difference vector from point 1 to point 2. | |
double | GetLength () const |
Get distance between line points. | |
double | GetLength2 () const |
Get quadratic distance between line points. | |
double | GetDirectionAngle () const |
Get direction angle of this line. | |
CLine2d | GetClipped (const CRectangle &rect) const |
Get part of line intersecting specified rectangle. | |
CLine2d | GetSwapped () const |
Get the line with replaced points (p1 = p2 and p2 = p1) | |
double | GetCutXPos (double linePosY) const |
Get Y position of cutting this line by specified horizontal line. | |
double | GetCutYPos (double linePosX) const |
Get X position of cutting this line by specified vertical line. | |
void | PushBeginPoint (const i2d::CVector2d &newBeginPoint) |
Copy begin point to end point and set new begin point. | |
void | PushEndPoint (const i2d::CVector2d &newEndPoint) |
Copy end point to begin point and set new end point. | |
void | PushBeginPointQuiet (const i2d::CVector2d &newBeginPoint) |
Quiet methods do not trigger any notification changes (to be used inside of algorithms) | |
void | PushEndPointQuiet (const i2d::CVector2d &newEndPoint) |
void | SetPoint1Quiet (const CVector2d &point) |
void | SetPoint2Quiet (const CVector2d &point) |
double | GetCutAlpha (const CLine2d &line) const |
Get a proportion of lines cut point to line length (called also 'alpha value'). | |
double | GetCastAlpha (const i2d::CVector2d &point) const |
std::tuple< double, double > | GetAlphaAndCastDistance (const i2d::CVector2d &point) const |
Get projection position 'alpha value' and orthogonal distance to line. | |
bool | GetCutPoint (const CLine2d &otherLine, i2d::CVector2d &cutPoint) const |
Get position where this line intersects the second one. | |
i2d::CVector2d | GetNearestPoint (const i2d::CVector2d &point) const |
Return a line point, which is the nearest to the specified point. | |
i2d::CVector2d | GetExtendedNearestPoint (const i2d::CVector2d &point) const |
Return a point on the straight line in a mathematical sense, which is the nearest to the specified point. | |
CLine2d | GetShortestEndConnection (const CLine2d &line) const |
Return a line, which connects the nearest end points of two lines. | |
CLine2d | GetShortestConnectionToNext (const CLine2d &line) const |
Return a line, which connects the nearest points of two lines. | |
CLine2d | GetShortestConnection (const i2d::CVector2d &point) const |
Return a line, which connects the nearest point of line and specified point. | |
CLine2d | GetShortestConnection (const CLine2d &line) const |
Return a line, which connects the nearest points of two lines. | |
bool | ApproxFromPoints (const QSet< i2d::CVector2d > &points) |
Calculate this line as approximation of set of points. | |
CVector2d | GetCenter () const override |
Returns center of this 2D-object. | |
void | MoveCenterTo (const CVector2d &position) override |
Move object to position position . | |
CRectangle | GetBoundingBox () const override |
Get bounding box of this shape. | |
bool | Transform (const ITransformation2d &transformation, ITransformation2d::ExactnessMode mode=ITransformation2d::EM_NONE, double *errorFactorPtr=nullptr) override |
Transform this object using some transformation. | |
bool | InvTransform (const ITransformation2d &transformation, ITransformation2d::ExactnessMode mode=ITransformation2d::EM_NONE, double *errorFactorPtr=nullptr) override |
Do inverse transformation of this object. | |
bool | GetTransformed (const ITransformation2d &transformation, IObject2d &result, ITransformation2d::ExactnessMode mode=ITransformation2d::EM_NONE, double *errorFactorPtr=nullptr) const override |
Calulate transformation of the object into second one. | |
bool | GetInvTransformed (const ITransformation2d &transformation, IObject2d &result, ITransformation2d::ExactnessMode mode=ITransformation2d::EM_NONE, double *errorFactorPtr=nullptr) const override |
Calulate inverse transformation of the object into second one. | |
QByteArray | GetFactoryId () const override |
bool | Serialize (iser::IArchive &archive) override |
Load or store state of this object as a archive stream. | |
int | GetSupportedOperations () const override |
Get set of flags for supported operations. | |
bool | CopyFrom (const IChangeable &object, CompatibilityMode mode=CM_WITHOUT_REFS) override |
std::unique_ptr< istd::IChangeable > | CloneMe (CompatibilityMode mode=CM_WITHOUT_REFS) const override |
Make a copy of this object. | |
![]() | |
CObject2dBase () | |
CObject2dBase (const CObject2dBase &object2d) | |
CObject2dBase (CObject2dBase &&object2d) | |
const ICalibration2d * | GetCalibration () const override |
Get access to transformation object, which transforms a local logical coordinate system to global one. | |
void | SetCalibration (istd::TOptDelPtr< const ICalibration2d > &&calibrationPtr) override |
Set calibration of this object. | |
bool | Transform (const ITransformation2d &transformation, ITransformation2d::ExactnessMode mode=ITransformation2d::EM_NONE, double *errorFactorPtr=nullptr) override |
Transform this object using some transformation. | |
bool | InvTransform (const ITransformation2d &transformation, ITransformation2d::ExactnessMode mode=ITransformation2d::EM_NONE, double *errorFactorPtr=nullptr) override |
Do inverse transformation of this object. | |
bool | GetTransformed (const ITransformation2d &transformation, IObject2d &result, ITransformation2d::ExactnessMode mode=ITransformation2d::EM_NONE, double *errorFactorPtr=nullptr) const override |
Calulate transformation of the object into second one. | |
bool | GetInvTransformed (const ITransformation2d &transformation, IObject2d &result, ITransformation2d::ExactnessMode mode=ITransformation2d::EM_NONE, double *errorFactorPtr=nullptr) const override |
Calulate inverse transformation of the object into second one. | |
bool | CopyFrom (const istd::IChangeable &object, CompatibilityMode mode=CM_WITHOUT_REFS) override |
Copy this object from another one. | |
bool | ResetData (CompatibilityMode mode=CM_WITHOUT_REFS) override |
Reset data to its default state. | |
CObject2dBase & | operator= (const CObject2dBase &object2d) |
CObject2dBase & | operator= (CObject2dBase &&object2d) |
![]() | |
![]() | |
![]() | |
virtual quint32 | GetMinimalVersion (int versionId) const |
Get minimal needed version to correct storing of this data. | |
![]() | |
virtual bool | IsEqual (const IChangeable &object) const |
Compare this object with another object. | |
virtual QMutex * | GetChangesLock () const |
Get mutex beeing locked during changes, if available. | |
virtual void | BeginChanges (const ChangeSet &changeSet) |
Starts the change transaction. | |
virtual void | EndChanges (const ChangeSet &changeSet) |
Ends the change transaction. | |
virtual void | BeginChangeGroup (const ChangeSet &changeSet) |
Starts group of changes. | |
virtual void | EndChangeGroup (const ChangeSet &changeSet) |
Ends group of changes. | |
![]() |
Static Public Member Functions | |
static QByteArray | GetTypeName () |
![]() | |
static const ChangeSet & | GetNoChanges () |
Get empty set of changes. | |
static const ChangeSet & | GetAnyChange () |
Get anonymous change set. | |
static const ChangeSet & | GetAllChanges () |
Get anonymous change set. | |
static const ChangeSet & | GetDelegatedChanges () |
Get delegated change set. | |
Additional Inherited Members | |
![]() | |
enum | ChangeFlags { CF_OBJECT_POSITION = 0x6ba340 } |
![]() | |
enum | ChangeFlags { CF_ICF_INTERNAL = 0 , CF_ALL_DATA , CF_ANY , CF_DESTROYING , CF_DELEGATED , CF_NO_UNDO } |
Data model change notification flags. More... | |
enum | SupportedOperations { SO_NONE = 0 , SO_OBSERVE = 1 << 0 , SO_COPY = 1 << 1 , SO_CLONE = 1 << 2 , SO_COMPARE = 1 << 3 , SO_RESET = 1 << 4 , SO_CHANGE_LOCK = 1 << 5 } |
Flags for supported operations. More... | |
enum | CompatibilityMode { CM_STRICT , CM_WITHOUT_REFS , CM_WITH_REFS , CM_CONVERT } |
Control how relationship betweeen objects are interpreted. More... | |
![]() | |
virtual void | OnBeginChanges () |
Callback function for begin change event. | |
virtual void | OnEndChanges (const ChangeSet &changeSet) |
Callback function for end change event. | |
![]() | |
static const ChangeSet | s_objectMovedChange |
static const ChangeSet | s_objectModifiedChange |
Definition of a line in 2D-space.
Line is stored as the ordered set of two points.
i2d::CLine2d::CLine2d | ( | ) |
i2d::CLine2d::CLine2d | ( | double | x1, |
double | y1, | ||
double | x2, | ||
double | y2 ) |
bool i2d::CLine2d::ApproxFromPoints | ( | const QSet< i2d::CVector2d > & | points | ) |
Calculate this line as approximation of set of points.
|
overridevirtual |
Make a copy of this object.
You may check, if this functionality is supported over GetSupportedOperations()
.
Reimplemented from istd::IChangeable.
Reimplemented in iipr::TWeightedFeatureWrap< i2d::CLine2d >, and imod::TModelWrap< i2d::CLine2d >.
|
override |
|
inline |
Get projection position 'alpha value' and orthogonal distance to line.
GetCastAlpha
, the second is GetExtendedDistance
, but it can be negative for positions on the left size. Definition at line 384 of file CLine2d.h.
References i2d::CVector2d::GetCrossProductZ(), i2d::CVector2d::GetDotProduct(), and imath::TVector< Size, Element >::GetLength2().
|
overridevirtual |
Get bounding box of this shape.
Please note, this bounding box is in logical units, the calibration will not be considered.
Implements i2d::IObject2d.
|
inline |
Definition at line 374 of file CLine2d.h.
References GetDiffVector(), i2d::CVector2d::GetDotProduct(), and imath::TVector< Size, Element >::GetLength2().
|
overridevirtual |
Returns center of this 2D-object.
Implements i2d::IObject2d.
CLine2d i2d::CLine2d::GetClipped | ( | const CRectangle & | rect | ) | const |
Get part of line intersecting specified rectangle.
|
inline |
Get a proportion of lines cut point to line length (called also 'alpha value').
Definition at line 361 of file CLine2d.h.
References i2d::CVector2d::GetCrossProductZ(), GetDiffVector(), and GetPoint1().
bool i2d::CLine2d::GetCutPoint | ( | const CLine2d & | otherLine, |
i2d::CVector2d & | cutPoint ) const |
Get position where this line intersects the second one.
|
inline |
Get Y position of cutting this line by specified horizontal line.
Definition at line 345 of file CLine2d.h.
References GetDiffVector(), i2d::CVector2d::GetX(), and i2d::CVector2d::GetY().
|
inline |
Get X position of cutting this line by specified vertical line.
Definition at line 353 of file CLine2d.h.
References GetDiffVector(), i2d::CVector2d::GetX(), and i2d::CVector2d::GetY().
|
inline |
Get difference vector from point 1 to point 2.
Definition at line 315 of file CLine2d.h.
Referenced by GetCastAlpha(), GetCutAlpha(), GetCutXPos(), and GetCutYPos().
double i2d::CLine2d::GetDirectionAngle | ( | ) | const |
Get direction angle of this line.
It will be returned in radians conform to i2d::CVector2d::GetAngle()
.
double i2d::CLine2d::GetDistance | ( | const CVector2d & | position | ) | const |
Get distance from nearest point of this line to specified position.
double i2d::CLine2d::GetExtendedDistance | ( | const CVector2d & | position | ) | const |
Get distance from nearest point of extended line to specified position.
As extended line are mean mathematical lines going over specified line points.
Get intersection position of extended lines.
As extended line are mean mathematical lines going over specified line points.
line | second line. |
result | object will be set to intersection point. |
i2d::CVector2d i2d::CLine2d::GetExtendedNearestPoint | ( | const i2d::CVector2d & | point | ) | const |
Return a point on the straight line in a mathematical sense, which is the nearest to the specified point.
|
overridevirtual |
Reimplemented from iser::IObject.
double i2d::CLine2d::GetIntercept | ( | ) | const |
Get intercept of this line.
Intercept is derivative value along Y axis (dy/dx) of line function.
Get intersection position of two lines.
line | second line. |
result | object will be set to intersection point. |
|
overridevirtual |
Calulate inverse transformation of the object into second one.
Please note, that this operation transforms logical coordinates, it means that the calibration will be ignored.
mode | controls needed transformation exactness. |
errorFactorPtr | optional output where approximated length of transformation error vector will be stored. Value 0 means that transformation is exactly done. |
result | result object. |
Implements i2d::IObject2d.
double i2d::CLine2d::GetLength | ( | ) | const |
Get distance between line points.
double i2d::CLine2d::GetLength2 | ( | ) | const |
Get quadratic distance between line points.
double i2d::CLine2d::GetMaxDistance | ( | const CVector2d & | position | ) | const |
Get maximal distance from points of this line to specified position.
i2d::CVector2d i2d::CLine2d::GetNearestPoint | ( | const i2d::CVector2d & | point | ) | const |
Return a line point, which is the nearest to the specified point.
|
inline |
Get value of first line point.
Definition at line 321 of file CLine2d.h.
Referenced by GetCutAlpha(), and i2d::qHash().
|
inline |
|
inline |
Get value of second line point.
Definition at line 333 of file CLine2d.h.
Referenced by i2d::qHash().
|
inline |
CVector2d i2d::CLine2d::GetPositionFromAlpha | ( | double | alpha | ) | const |
Get position of point using normed 'alpha' value.
Value 0 will be mapped to point 1 and value 1 will be mapped to point 2.
Return a line, which connects the nearest points of two lines.
CLine2d i2d::CLine2d::GetShortestConnection | ( | const i2d::CVector2d & | point | ) | const |
Return a line, which connects the nearest point of line and specified point.
Return a line, which connects the nearest points of two lines.
Only connection between end point of first line and second line or connection between first line and begin point of second line will be checked.
Return a line, which connects the nearest end points of two lines.
double i2d::CLine2d::GetSlope | ( | ) | const |
Get slope of this line.
Slope is derivative value along X axis (dx/dy) of line function.
|
overridevirtual |
Get set of flags for supported operations.
Reimplemented from istd::IChangeable.
Reimplemented in imod::TModelWrap< i2d::CLine2d >, and iser::TCopySerializedWrap< i2d::CLine2d >.
CLine2d i2d::CLine2d::GetSwapped | ( | ) | const |
Get the line with replaced points (p1 = p2 and p2 = p1)
|
overridevirtual |
Calulate transformation of the object into second one.
Please note, that this operation transforms logical coordinates, it means that the calibration will be ignored.
mode | controls needed transformation exactness. |
errorFactorPtr | optional output where approximated length of transformation error vector will be stored. Value 0 means that transformation is exactly done. |
result | result object. |
Implements i2d::IObject2d.
|
static |
|
overridevirtual |
Do inverse transformation of this object.
Please note, that this operation transforms logical coordinates, it means that the calibration will be ignored.
mode | controls needed transformation exactness. |
errorFactorPtr | optional output where approximated length of transformation error vector will be stored. Value 0 means that transformation is exactly done. |
Implements i2d::IObject2d.
bool i2d::CLine2d::IsIntersectedBy | ( | const CLine2d & | line | ) | const |
Check if two lines intersect.
line | second line. |
|
inline |
bool i2d::CLine2d::IsParallel | ( | const CLine2d & | line | ) | const |
Check if this line is parallel to another one.
|
overridevirtual |
Move object to position position
.
Implements i2d::IObject2d.
|
inline |
Definition at line 303 of file CLine2d.h.
References operator==().
|
inline |
Definition at line 297 of file CLine2d.h.
Referenced by operator!=().
void i2d::CLine2d::PushBeginPoint | ( | const i2d::CVector2d & | newBeginPoint | ) |
Copy begin point to end point and set new begin point.
|
inline |
void i2d::CLine2d::PushEndPoint | ( | const i2d::CVector2d & | newEndPoint | ) |
Copy end point to begin point and set new end point.
|
inline |
|
overridevirtual |
Load or store state of this object as a archive stream.
Type of operation is depending on archive type.
Implements iser::ISerializable.
Reimplemented in iipr::TWeightedFeatureWrap< i2d::CLine2d >.
void i2d::CLine2d::SetPoint1 | ( | const CVector2d & | point | ) |
Set value of first line point.
|
inline |
void i2d::CLine2d::SetPoint2 | ( | const CVector2d & | point | ) |
Set value of second line point.
|
inline |
|
overridevirtual |
Transform this object using some transformation.
Please note, that this operation transforms logical coordinates, it means that the calibration will be ignored.
mode | controls needed transformation exactness. |
errorFactorPtr | optional output where approximated length of transformation error vector will be stored. Value 0 means that transformation is exactly done. |
Implements i2d::IObject2d.
© Witold Gantzke and Kirill Lepskiy