SDXFrameWork  0.13
SDXFrameWork
 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 }
Wave(double 速度, double 角速度, double 初角=0)
速度を大きくすると最大値が変化し、角速度により周期が変化する.
Definition: Speed.h:73
double Update() override
速度を更新.
Definition: Speed.h:55
常に同じ速度.
Definition: Speed.h:13
Liner(double 速度)
速度を指定する.
Definition: Speed.h:20
速度のインターフェース.
Definition: ISpeed.h:13
一定速度まで加速.
Definition: Speed.h:93
double Update() override
速度を更新.
Definition: Speed.h:29
double Update() override
速度を更新.
Definition: Speed.h:84
0~速度で周期的に変化.
Definition: Speed.h:64
double Get() const override
現在の速度を取得.
Definition: Speed.h:50
Accel(double 初速, double 加速度)
初速と加速度を指定.
Definition: Speed.h:45
加速する.
Definition: Speed.h:37
double Update() override
速度を更新.
Definition: Speed.h:113
double Get() const override
現在の速度を取得.
Definition: Speed.h:24
AccelLimit(double 初速, double 加速度, double 限界速度)
初期状態を設定.
Definition: Speed.h:102
double Get() const override
現在の速度を取得.
Definition: Speed.h:79
double Get() const override
現在の速度を取得.
Definition: Speed.h:108