|
DigitalCurling3
1.0.0
A curling simulation system for curling AIs
|
Go to the documentation of this file.
26 #ifndef DIGITALCURLING3_I_SIMULATOR_HPP
27 #define DIGITALCURLING3_I_SIMULATOR_HPP
40 class ISimulatorFactory;
41 class ISimulatorStorage;
136 :
a(a_id, a_transform)
137 ,
b(b_id, b_transform)
169 virtual void Step() = 0;
189 virtual std::vector<Collision>
const&
GetCollisions()
const = 0;
226 virtual std::unique_ptr<ISimulatorStorage>
CreateStorage()
const = 0;
242 NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(
250 NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(
251 ISimulator::Collision::Stone,
256 NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(
257 ISimulator::Collision,
266 #endif // DIGITALCURLING3_I_SIMULATOR_HPP
ストーンどうしの衝突の情報
Definition: i_simulator.hpp:100
Vector2 linear_velocity
速度(m/s)
Definition: i_simulator.hpp:73
virtual void Save(ISimulatorStorage &storage) const =0
ストレージに現在の状態を保存する
Stone(std::uint8_t id, Transform const &transform)
与えられたデータで初期化します
Definition: i_simulator.hpp:113
virtual void Step()=0
1フレーム進める.
2次元ベクトル
Definition: vector2.hpp:37
float angular_velocity
角速度(radian/s)
Definition: i_simulator.hpp:74
virtual std::string GetSimulatorId() const =0
シミュレータIDを得る.
Collision(std::uint8_t a_id, std::uint8_t b_id, Transform const &a_transform, Transform const &b_transform, float normal_impulse, float tangent_impulse)
与えられたパラメータで初期化します
Definition: i_simulator.hpp:135
static constexpr float kStoneRadius
ストーンの半径(m)
Definition: i_simulator.hpp:66
virtual ISimulatorFactory const & GetFactory() const =0
ファクトリーを得る
virtual AllStones const & GetStones() const =0
全ストーンの情報を取得する.
Stone a
衝突したストーン
Definition: i_simulator.hpp:115
std::array< std::optional< Stone >, kStoneMax > AllStones
全ストーンの位置と速度
Definition: i_simulator.hpp:97
virtual std::vector< Collision > const & GetCollisions() const =0
直前の Step() の呼出しで発生したすべての衝突の情報を得る.
Stone()
デフォルトコンストラクタ
Definition: i_simulator.hpp:107
virtual std::unique_ptr< ISimulatorStorage > CreateStorage() const =0
ストレージを生成し,現在の状態を保存する
Stone(Vector2 position, float angle, Vector2 linear_velocity, float angular_velocity)
与えられたデータで初期化します
Definition: i_simulator.hpp:88
Stone b
衝突したストーン
Definition: i_simulator.hpp:116
ストーンの挙動を再現する物理シミュレータを扱うためのインターフェイス
Definition: i_simulator.hpp:57
ISimulator を構築するためのクラスです
Definition: i_simulator_factory.hpp:42
ISimulator の状態を保存するストレージ
Definition: i_simulator_storage.hpp:46
float normal_impulse
法線方向の撃力
Definition: i_simulator.hpp:117
std::uint8_t id
ストーンのID
Definition: i_simulator.hpp:103
ISimulator & operator=(ISimulator const &)=default
コピー代入演算子.何もコピーしません.サブクラスでのdefault実装をサポートするためのものです.
virtual bool AreAllStonesStopped() const =0
全ストーンが停止しているかをチェックする.
Collision()
全パラメータを 0 で初期化します
Definition: i_simulator.hpp:121
ストーンの位置,角度,速度,角速度を格納します
Definition: i_simulator.hpp:72
Digital Curling ライブラリはこの名前空間の中に定義されます
Definition: polymorphic_json.hpp:37
virtual void SetStones(AllStones const &stones)=0
全ストーンの情報を設定する.
float tangent_impulse
接線方向の撃力
Definition: i_simulator.hpp:118
virtual float GetSecondsPerFrame() const =0
1回 Step() の呼出しで進む時間を得る.
Transform transform
ストーンの位置と角度
Definition: i_simulator.hpp:104
衝突に関するストーンの情報
Definition: i_simulator.hpp:102
static constexpr std::uint8_t kStoneMax
シミュレータ上に配置可能なストーンの最大数
Definition: i_simulator.hpp:63
virtual void Load(ISimulatorStorage const &storage)=0
ストレージから状態を復元する
Stone()
全データを0で初期化します
Definition: i_simulator.hpp:77
Vector2 GetContactPoint() const
ストーンどうしが接した座標を得る。
Definition: i_simulator.hpp:144