ACF $AcfVersion:0$
CAffineTransformation2d.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// ACF includes
7#include <i2d/CAffine2d.h>
8
9
10namespace i2d
11{
12
13
18{
19public:
21
22 explicit CAffineTransformation2d(const i2d::CAffine2d& transformation);
23
27 const i2d::CAffine2d& GetTransformation() const;
28
34
38 void SetTransformation(const i2d::CAffine2d& transformation);
39
43 void Reset();
44
48 void Reset(const CVector2d& translation);
49
53 void Reset(const CVector2d& translation, double angle, double scale = 1.0);
54
58 void Reset(const CVector2d& translation, double angle, const CVector2d& scale);
59
60 // reimplemented (i2d::ITransformation2d)
61 virtual int GetTransformationFlags() const override;
62 virtual bool GetDistance(
63 const CVector2d& origPos1,
64 const CVector2d& origPos2,
65 double& result,
66 ExactnessMode mode = EM_NONE) const override;
67 virtual bool GetPositionAt(
68 const CVector2d& origPosition,
69 CVector2d& result,
70 ExactnessMode mode = EM_NONE) const override;
71 virtual bool GetInvPositionAt(
72 const CVector2d& transfPosition,
73 CVector2d& result,
74 ExactnessMode mode = EM_NONE) const override;
75 virtual bool GetLocalTransform(
76 const CVector2d& origPosition,
77 CAffine2d& result,
78 ExactnessMode mode = EM_NONE) const override;
80 const CVector2d& transfPosition,
81 CAffine2d& result,
82 ExactnessMode mode = EM_NONE) const override;
83
84 // reimplemented (imath::TISurjectFunction)
85 virtual bool GetInvValueAt(const CVector2d& argument, CVector2d& result) const override;
86 virtual CVector2d GetInvValueAt(const CVector2d& argument) const override;
87
88 // reimplemented (imath::TIMathFunction)
89 virtual bool GetValueAt(const CVector2d& argument, CVector2d& result) const override;
90 virtual CVector2d GetValueAt(const CVector2d& argument) const override;
91
92 // reimplemented (iser::ISerializable)
93 virtual bool Serialize(iser::IArchive& archive) override;
94
95 // reimplemented (istd::IChangeable)
96 virtual bool CopyFrom(const istd::IChangeable& object, CompatibilityMode mode = CM_WITHOUT_REFS) override;
98
99protected:
101};
102
103
104// inline methods
105
110
111
116
117
118} // namespace i2d
119
120
121
122
This class defines an affine 2D-transformation.
Definition CAffine2d.h:18
Definition of an affine transformation for 2D-spaces.
virtual bool GetValueAt(const CVector2d &argument, CVector2d &result) const override
virtual CVector2d GetInvValueAt(const CVector2d &argument) const override
virtual bool GetInvPositionAt(const CVector2d &transfPosition, CVector2d &result, ExactnessMode mode=EM_NONE) const override
Get position after transformation.
virtual bool Serialize(iser::IArchive &archive) override
Load or store state of this object as a archive stream.
void Reset(const CVector2d &translation)
Set this transformation to translation.
void SetTransformation(const i2d::CAffine2d &transformation)
Set the transformation object.
virtual bool GetDistance(const CVector2d &origPos1, const CVector2d &origPos2, double &result, ExactnessMode mode=EM_NONE) const override
Compute a shortness distance in transformed coordinations.
void Reset(const CVector2d &translation, double angle, double scale=1.0)
Set this transformation to translation, rotation and scaling.
const i2d::CAffine2d & GetTransformation() const
Get used transformation object.
void Reset(const CVector2d &translation, double angle, const CVector2d &scale)
Set this transformation to translation, rotation and both axis scaling.
virtual bool GetLocalTransform(const CVector2d &origPosition, CAffine2d &result, ExactnessMode mode=EM_NONE) const override
Get local transformation (from original to transformed coordinate system) at some original position.
void Reset()
Set to identity transformation.
i2d::CAffine2d & GetTransformationRef()
Get reference to internal transformation object.
virtual int GetTransformationFlags() const override
Get flags of describing type of this transformation.
virtual bool GetPositionAt(const CVector2d &origPosition, CVector2d &result, ExactnessMode mode=EM_NONE) const override
Get position after transformation.
virtual bool GetInvValueAt(const CVector2d &argument, CVector2d &result) const override
CAffineTransformation2d(const i2d::CAffine2d &transformation)
virtual CVector2d GetValueAt(const CVector2d &argument) const override
virtual istd::TUniqueInterfacePtr< istd::IChangeable > CloneMe(CompatibilityMode mode=CM_WITHOUT_REFS) const override
Make a copy of this object.
virtual bool GetLocalInvTransform(const CVector2d &transfPosition, CAffine2d &result, ExactnessMode mode=EM_NONE) const override
Get local transformation (from transformed to original coordinate system) at some transformed positio...
virtual bool CopyFrom(const istd::IChangeable &object, CompatibilityMode mode=CM_WITHOUT_REFS) override
Copy this object from another one.
Definition of position or mathematical vector on 2D plane.
Definition CVector2d.h:29
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
Common interface for data model objects, which can be changed.
Definition IChangeable.h:28
CompatibilityMode
Control how relationship betweeen objects are interpreted.
@ CM_WITHOUT_REFS
External references are simple ignored.
Unique ownership smart pointer for interface types.
Contains the 2D objects.
Definition CAffine2d.h:11