SDXFrameWork 0.10 SDXFrameWork

- Main Page
- Related Pages
- Classes

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