SDXFrameWork 0.12 SDXFrameWork

- Main Page
- Related Pages
- Classes

All Classes Namespaces Functions Variables Enumerations Enumerator Pages
IPosition.h
1 //Copyright © 2014 SDXFramework
2 //[License]GNU Affero General Public License, version 3
3 //[Contact]http://sourceforge.jp/projects/dxframework/
4 #include <algorithm>
5
6 namespace SDX
7 {
9 class IPosition
10 {
11 protected:
12 double zoomX = 1;
13 double zoomY = 1;
14 public:
15 virtual ~IPosition() = default;
16
18 virtual void SetPos(double X座標, double Y座標) = 0;
19
21 virtual void MultiZoom(double X倍率, double Y倍率) = 0;
22
24 virtual void SetZoom(double X拡大率, double Y拡大率)
25 {
26 MultiZoom(X拡大率 / zoomX, Y拡大率 / zoomY);
27 }
28
30 void MultiZoom(double 倍率)
31 {
32 MultiZoom(倍率, 倍率);
33 }
34
36 virtual void Move(double X移動量, double Y移動量) = 0;
37
39 void MoveA(double 距離, double 方向 )
40 {
41 Move(距離 * cos(方向), 距離 * sin(方向));
42 }
43
45 virtual void Rotate(double 回転する角度) = 0;
46
48 virtual double GetAngle() const
49 {
50 return 0;
51 }
52
54 virtual void SetAngle(double 指定角度)
55 {
56 Rotate(指定角度 - GetAngle());
57 }
58
60 double GetDirect(IPosition* 比較対象) const
61 {
62 return atan2(比較対象->GetY() - this->GetY(), 比較対象->GetX() - this->GetX());
63 }
64
66 double GetDistance(IPosition* 比較対象) const
67 {
68 const double xd = this->GetX() - 比較対象->GetX();
69 const double yd = this->GetY() - 比較対象->GetY();
70
71 return sqrt(xd * xd + yd * yd);
72 }
73
75 double CompareAngle(double 角度)
76 {
77 return 0;
78 }
79
81 virtual double GetX() const = 0;
82
84 virtual double GetY() const = 0;
85
87 virtual double GetW() const = 0;
88
90 virtual double GetH() const = 0;
91 };
92 }
SDX::IPosition::GetAngle
virtual double GetAngle() const
角度を取得する.
Definition: IPosition.h:48
SDX::IPosition::MultiZoom
void MultiZoom(double 倍率)
拡大率を掛け算する.
Definition: IPosition.h:30
SDX::IPosition::GetDistance
double GetDistance(IPosition *比較対象) const
対象との相対座標を取得.
Definition: IPosition.h:66
SDX::IPosition::GetW
virtual double GetW() const =0
幅を取得.
SDX::IPosition::GetH
virtual double GetH() const =0
高さを取得.
SDX::IPosition::MultiZoom
virtual void MultiZoom(double X倍率, double Y倍率)=0
縦横別で拡大率を掛け算する.
SDX::IPosition::SetAngle
virtual void SetAngle(double 指定角度)
角度を指定する.
Definition: IPosition.h:54
SDX::IPosition::Rotate
virtual void Rotate(double 回転する角度)=0
回転する.
SDX::IPosition::GetY
virtual double GetY() const =0
Y座標を取得.
SDX::IPosition::Move
virtual void Move(double X移動量, double Y移動量)=0
相対座標で移動.
SDX::IPosition::SetZoom
virtual void SetZoom(double X拡大率, double Y拡大率)
拡大率を設定.
Definition: IPosition.h:24
SDX::IPosition::zoomX
double zoomX
図形の拡大率
Definition: IPosition.h:14
SDX::IPosition::SetPos
virtual void SetPos(double X座標, double Y座標)=0
指定座標に移動.
SDX::IPosition
位置と方向を持つクラスのインターフェース.
Definition: IPosition.h:11
SDX::IPosition::GetX
virtual double GetX() const =0
X座標を取得.
SDX::IPosition::CompareAngle
double CompareAngle(double 角度)
角度の差を計算する
Definition: IPosition.h:75
SDX::IPosition::zoomY
double zoomY
図形の拡大率
Definition: IPosition.h:15
SDX::IPosition::GetDirect
double GetDirect(IPosition *比較対象) const
対象との角度を取得.
Definition: IPosition.h:60
SDX::IPosition::MoveA
void MoveA(double 距離, double 方向)
極座標で移動.
Definition: IPosition.h:39