SDXFrameWork 0.10 SDXFrameWork

- Main Page
- Related Pages
- Classes

All Classes Namespaces Functions Variables Enumerations Enumerator Pages
Speed.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 <Utility/ISpeed.h>
6
7 namespace SDX
8 {
9 namespace SPEED
10 {
13 class Liner : public ISpeed
14 {
15 private:
16 double speed;//速度
17 public:
18
20 Liner(double 速度) :
21 speed(速度)
22 {}
23
24 double Get() const override
25 {
26 return speed;
27 }
28
29 double Update() override
30 {
31 return Get();
32 }
33 };
34
37 class Accel : public ISpeed
38 {
39 private:
40 double speed;
41 double accel;
42 public:
43
45 Accel(double 初速, double 加速度) :
46 speed(初速),
47 accel(加速度)
48 {}
49
50 double Get() const override
51 {
52 return speed;
53 }
54
55 double Update() override
56 {
57 speed += accel;
58 return Get();
59 }
60 };
61
64 class Wave : public ISpeed
65 {
66 private:
67 double speed;
68 double 角度;
69 double 角速度;
70 public:
71
73 Wave(double 速度, double 角速度, double 初角 = 0) :
74 speed(速度),
75 角速度(角速度),
76 角度(初角)
77 {}
78
79 double Get() const override
80 {
81 return std::abs(std::sin(角度) * speed);
82 }
83
84 double Update() override
85 {
86 角度 += 角速度;
87 return Get();
88 }
89 };
90
93 class AccelLimit : public ISpeed
94 {
95 private:
96 double speed;
97 double 加速度;
98 double 限界速度;
99 public:
100
102 AccelLimit(double 初速, double 加速度, double 限界速度) :
103 speed(初速),
104 加速度(加速度),
105 限界速度(限界速度)
106 {}
107
108 double Get() const override
109 {
110 return speed;
111 }
112
113 double Update() override
114 {
115 speed += 加速度;
116 if (speed > 限界速度 && 加速度 > 0) speed = 限界速度;
117 if (speed < 限界速度 && 加速度 < 0) speed = 限界速度;
118 return Get();
119 }
120 };
121 }
122 }
SDX::SPEED::Wave::Wave
Wave(double 速度, double 角速度, double 初角=0)
速度を大きくすると最大値が変化し、角速度により周期が変化する.
Definition: Speed.h:73
SDX::SPEED::Accel::Update
double Update() override
速度を更新.
Definition: Speed.h:55
SDX::SPEED::Liner
常に同じ速度.
Definition: Speed.h:13
SDX::SPEED::Liner::Liner
Liner(double 速度)
速度を指定する.
Definition: Speed.h:20
SDX::SPEED::ISpeed
速度のインターフェース.
Definition: ISpeed.h:13
SDX::SPEED::AccelLimit
一定速度まで加速.
Definition: Speed.h:93
SDX::SPEED::Liner::Update
double Update() override
速度を更新.
Definition: Speed.h:29
SDX::SPEED::Wave::Update
double Update() override
速度を更新.
Definition: Speed.h:84
SDX::SPEED::Wave
0～速度で周期的に変化.
Definition: Speed.h:64
SDX::SPEED::Accel::Get
double Get() const override
現在の速度を取得.
Definition: Speed.h:50
SDX::SPEED::Accel::Accel
Accel(double 初速, double 加速度)
初速と加速度を指定.
Definition: Speed.h:45
SDX::SPEED::Accel
加速する.
Definition: Speed.h:37
SDX::SPEED::AccelLimit::Update
double Update() override
速度を更新.
Definition: Speed.h:113
SDX::SPEED::Liner::Get
double Get() const override
現在の速度を取得.
Definition: Speed.h:24
SDX::SPEED::AccelLimit::AccelLimit
AccelLimit(double 初速, double 加速度, double 限界速度)
初期状態を設定.
Definition: Speed.h:102
SDX::SPEED::Wave::Get
double Get() const override
現在の速度を取得.
Definition: Speed.h:79
SDX::SPEED::AccelLimit::Get
double Get() const override
現在の速度を取得.
Definition: Speed.h:108