SDXFrameWork  0.13
SDXFrameWork
 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 }
virtual double GetAngle() const
角度を取得する.
Definition: IPosition.h:48
void MultiZoom(double 倍率)
拡大率を掛け算する.
Definition: IPosition.h:30
double GetDistance(IPosition *比較対象) const
対象との相対座標を取得.
Definition: IPosition.h:66
virtual double GetW() const =0
幅を取得.
virtual double GetH() const =0
高さを取得.
virtual void MultiZoom(double X倍率, double Y倍率)=0
縦横別で拡大率を掛け算する.
virtual void SetAngle(double 指定角度)
角度を指定する.
Definition: IPosition.h:54
virtual void Rotate(double 回転する角度)=0
回転する.
virtual double GetY() const =0
Y座標を取得.
virtual void Move(double X移動量, double Y移動量)=0
相対座標で移動.
virtual void SetZoom(double X拡大率, double Y拡大率)
拡大率を設定.
Definition: IPosition.h:24
double zoomX
図形の拡大率
Definition: IPosition.h:14
virtual void SetPos(double X座標, double Y座標)=0
指定座標に移動.
位置と方向を持つクラスのインターフェース.
Definition: IPosition.h:11
virtual double GetX() const =0
X座標を取得.
double CompareAngle(double 角度)
角度の差を計算する
Definition: IPosition.h:75
double zoomY
図形の拡大率
Definition: IPosition.h:15
double GetDirect(IPosition *比較対象) const
対象との角度を取得.
Definition: IPosition.h:60
void MoveA(double 距離, double 方向)
極座標で移動.
Definition: IPosition.h:39