ACF $AcfVersion:0$
CDirection2d.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
5namespace i2d
6{
7
8
9class CVector2d;
10
11
16{
17public:
19
23 CDirection2d(const CDirection2d& direction);
24
29 explicit CDirection2d(double radian);
30
34 CDirection2d(const CVector2d& direction);
35
39 static CDirection2d FromRadian(double radian);
40
44 static CDirection2d FromDegree(double degree);
45
50 double ToDegree() const;
51
56 double ToRadian() const;
57
62 double DistInRadian(const CDirection2d& dir2) const;
63
68 double DistInDegree(const CDirection2d& dir2) const;
69
74 CDirection2d Avg(const CDirection2d& dir2) const;
75
80 CDirection2d Avg(double weight, const CDirection2d& dir2) const;
81
82 CDirection2d TurnByRadian(double turn) const;
83
89 bool operator==(const CDirection2d& dir2) const;
90
94 bool IsInRange(const CDirection2d& leftDirectionLimit, const CDirection2d& rightDirectionLimit) const;
95
96private:
101 bool Invariant() const;
102
106 static double Normalize(double radian);
107
111 double m_direction;
112};
113
114
115} // namespace i2d
116
117
118
119
Represents a direction in 2D space.
double ToDegree() const
Get direction in degrees.
double DistInRadian(const CDirection2d &dir2) const
Get angle difference in radians.
CDirection2d(const CDirection2d &direction)
Construct a new object by copy.
static CDirection2d FromRadian(double radian)
Construct a new CDirection2d object and initialize from radian.
bool operator==(const CDirection2d &dir2) const
Compare the objects direction with the one of dir2.
bool IsInRange(const CDirection2d &leftDirectionLimit, const CDirection2d &rightDirectionLimit) const
Check if the direction is in the direction range between leftDirectionLimit and rightDirectionLimit.
CDirection2d Avg(double weight, const CDirection2d &dir2) const
Get weighted minimal distance between two directions.
CDirection2d Avg(const CDirection2d &dir2) const
Get minimal distance between two directions.
CDirection2d TurnByRadian(double turn) const
double ToRadian() const
Get direction in radians.
CDirection2d(double radian)
Construct a new object from radian coordinates.
static CDirection2d FromDegree(double degree)
Construct a new CDirection2d object and initialize from degree.
CDirection2d(const CVector2d &direction)
Construct direction using angle of vector.
double DistInDegree(const CDirection2d &dir2) const
Get angle difference in degrees.
Definition of position or mathematical vector on 2D plane.
Definition CVector2d.h:29
Contains the 2D objects.
Definition CAffine2d.h:11