2 #include <SDXFrameWork.h>
13 ModelMove(Model *移動対象):
24 void 直進(
double 速度,
double 角度)
33 if (model->
GetX() < 移動範囲.GetLeft())
35 if (角度 > PAI / 2 && 角度 < PAI * 3 / 2)
41 if (model->
GetX() > 移動範囲.GetRight())
43 if (角度 < PAI / 2 || 角度 > PAI * 3 / 2)
48 else if (model->
GetY() < 移動範囲.GetTop())
55 else if (model->
GetY() > 移動範囲.GetBottom())
63 if (角度 < 0) 角度 += PAI * 2;
64 if (角度 > PAI * 2) 角度 -= PAI * 2;
70 bool 指定移動(
double 速度,
double 目標X,
double 目標Y)
72 const double lx = 目標X - model->
GetX();
73 const double ly = 目標Y - model->
GetY();
75 if (lx * lx + ly * ly <= 速度 * 速度)
81 const double angle = atan2(ly, lx);
100 void 円軌道(
double 角速度,
円軌道状態 &状態,
double 半径X,
double 半径Y)
104 状態.前位置X = cos(状態.角度) * 半径X;
105 状態.前位置Y = sin(状態.角度) * 半径Y;
110 const double nextX = cos(状態.角度) * 半径X;
111 const double nextY = sin(状態.角度) * 半径Y;
113 model->
Move(nextX - 状態.前位置X, nextY - 状態.前位置Y);
126 void 振動(
振動状態 &状態,
double X振幅,
double Y振幅)
128 状態.移動量X =
Rand::Get(-X振幅, X振幅) - 状態.移動量X;
129 状態.移動量Y =
Rand::Get(-Y振幅, Y振幅) - 状態.移動量Y;
130 model->
Move(状態.移動量X, 状態.移動量Y);
矩形を表す図形クラス.
Definition: Shape.h:689
void MovePolar(double 距離, double 方向)
極座標で移動.
Definition: Model.h:123
void 直進(double 速度, double 角度)
角度を指定して移動.
Definition: ModelMove.h:24
Definition: ModelMove.h:119
void 前進(double 速度)
Modelの向きに移動.
Definition: ModelMove.h:18
double GetAngle()
角度を取得する.
Definition: Model.h:178
double GetY() const
Y座標を取得.
Definition: Model.h:221
bool 指定移動(double 速度, double 目標X, double 目標Y)
目標座標まで移動.
Definition: ModelMove.h:70
void Move(double X移動量, double Y移動量)
相対座標で移動.
Definition: Model.h:117
Definition: ModelMove.h:87
double GetX() const
X座標を取得.
Definition: Model.h:215
void 振動(振動状態 &状態, double X振幅, double Y振幅)
範囲内でランダムに移動.
Definition: ModelMove.h:126
static double Get(double 最大値)
0~最大値の乱数を取得.
Definition: Rand.h:22
void 円軌道(double 角速度, 円軌道状態 &状態, double 半径X, double 半径Y)
円周上を移動.
Definition: ModelMove.h:100
void 跳ね返り(double 速度, double &角度, Rect &移動範囲)
範囲外に出ると反転する.
Definition: ModelMove.h:30
void SetPos(double X座標, double Y座標)
指定座標に移動.
Definition: Model.h:129