19 color_gray_(GetColor(180, 80, 80)),
20 color_light_gray_(GetColor(200, 160, 160)),
21 color_dark_gray_(GetColor(40, 40, 40)),
30 divided_map_.
Init(map_, hexapod_pos_);
37 divided_map_.
Init(map_, hexapod_pos_);
48 for (
size_t i = 0; i < map_point_size; i++)
50 DrawCube3DWithTopPos(ConvertToDxlibVec(map_.
GetMapPoint(i)), cube_size_, color_dark_gray_);
53 for (
const auto& [i, j] : DoubleIntRange(30, 30))
55 for (
int k = 0; k < divided_map_.
GetPointNum(i, j); k++)
58 ConvertToDxlibVec(divided_map_.
GetPointPos(i, j, k)),
60 (i + j) % 2 == 0 ? color_light_gray_ : color_gray_);
Vector3 GetPointPos(int x_index, int y_index, int divided_map_index) const
格子状に切り分けられたマップから,脚設置可能点の実際の座標を取得する. 範囲外の値を指定した場合は,(0,0,0)を返す.
void Init(const MapState &map_state, const Vector3 global_robot_com)
マップのデータを初期化する. ロボットの重心座標を中心にマップのデータを格子状に分割し, その中に存在する脚設置可能点を集める.
int GetPointNum(int x_index, int y_index) const
格子状に切り分けられたマップから,脚設置可能点の数を取得する. 範囲外の値を指定した場合は,0を返す.
void SetNode(const RobotStateNode &pos) override
ロボットの重心のグローバル座標を設定する. DividedMap はロボットの重心を中心にしているので, ロボットの重心のグローバル座標を設定する必要がある. 代入と同時に DividedMap...
void Draw() const override
マップの描画を行う.
void SetMapState(const MapState &map)
マップの状態を設定する.代入と同時に DividedMap も更新される.
size_t GetMapPointSize() const noexcept
脚設置可能点の総数を返す.
Vector3 GetMapPoint(const size_t index) const noexcept
脚設置可能点の座標を返す.
void DrawCube3DWithTopPos(const VECTOR &top_pos, const float side_len, const unsigned int color)
3D空間に立方体を描画する.立方体の上面の中心の座標から描画する.
VECTOR ConvertToDxlibVec(const Vector3 &vec)
Dxlibの座標を示すVECTORと,このプログラムで使用しているVectorを変換する. ロボット座標系は右手座標系, Dxlibは左手座標系(工学は右手・ゲームライブラリは左手が多い)なのでyを...
グラフ構造のためのノード(頂点).旧名 LNODE
Vector3 center_of_mass_global_coord
[4 * 3 = 12byte] グローバル座標系における重心の位置.旧名 GCOM