GaitGeneration by Graph Search
読み取り中…
検索中…
一致する文字列を見つけられません
dxlib_util.h
[詳解]
1
3
4// Copyright(c) 2023-2025 Design Engineering Laboratory, Saitama University
5// Released under the MIT license
6// https://opensource.org/licenses/mit-license.php
7
8#ifndef DESIGNLAB_DXLIB_UTIL_H_
9#define DESIGNLAB_DXLIB_UTIL_H_
10
11#include <array>
12
13#include <Dxlib.h>
14
16#include "math_vector3.h"
17
18
24{
25
28void InitDxlib3DSetting(bool high_quality);
29
35inline VECTOR ConvertToDxlibVec(const Vector3& vec)
36{
37 return VGet(vec.x, -vec.y, vec.z);
38}
39
44inline MATRIX ConvertToDxlibMat(const RotationMatrix3x3& mat)
45{
46 return {
47 mat.element[0][0], mat.element[0][1], mat.element[0][2], 0,
48 mat.element[1][0], mat.element[1][1], mat.element[1][2], 0,
49 mat.element[2][0], mat.element[2][1], mat.element[2][2], 0,
50 0, 0, 0, 1
51 };
52}
53
61inline Vector3 ConvertDesignLabVec(const VECTOR& vec)
62{
63 return Vector3(vec.x, -vec.y, vec.z);
64}
65
66
70void SetZBufferEnable();
71
72
77void DrawCube3D(const VECTOR& center_pos, float side_len, unsigned int color);
78
79
85 const VECTOR& top_pos, float side_len, unsigned int color);
86
87
92void DrawHexagon(const std::array<VECTOR, 6>& vertex, unsigned int color);
93
94
100 const std::array<VECTOR, 6>& vertex, float height, unsigned int color);
101
102
103} // namespace designlab::dxlib_util
104
105
106namespace DxLib
107{
108// VECTORの算術演算子を自作する.
109
110constexpr VECTOR operator+(const VECTOR& vec1, const VECTOR& vec2)
111{
112 return { vec1.x + vec2.x, vec1.y + vec2.y, vec1.z + vec2.z };
113};
114
115constexpr VECTOR operator-(const VECTOR& vec1, const VECTOR& vec2)
116{
117 return { vec1.x - vec2.x, vec1.y - vec2.y, vec1.z - vec2.z };
118};
119
120constexpr VECTOR operator*(const VECTOR& vec, const float s)
121{
122 return { vec.x * s, vec.y * s, vec.z * s };
123};
124
125constexpr VECTOR operator*(const float s, const VECTOR& vec)
126{
127 return vec * s;
128};
129
130constexpr VECTOR operator/(const VECTOR& vec, const float s)
131{
132 return { vec.x / s, vec.y / s, vec.z / s };
133};
134
135} // namespace DxLib
136
137
138#endif // DESIGNLAB_DXLIB_UTIL_H_
constexpr VECTOR operator-(const VECTOR &vec1, const VECTOR &vec2)
Definition dxlib_util.h:115
constexpr VECTOR operator+(const VECTOR &vec1, const VECTOR &vec2)
Definition dxlib_util.h:110
constexpr VECTOR operator/(const VECTOR &vec, const float s)
Definition dxlib_util.h:130
constexpr VECTOR operator*(const VECTOR &vec, const float s)
Definition dxlib_util.h:120
Dxlibの3D表示を行う処理を書き直した関数をまとめた名前空間.
Vector3 ConvertDesignLabVec(const VECTOR &vec)
このプログラムで使用しているVectorと, Dxlibの座標を示す VECTOR を変換する. ロボット座標系は右手座標系, Dxlibは左手座標系(工学は右手・ゲームライブラリは左手が多い) な...
Definition dxlib_util.h:61
void DrawCube3DWithTopPos(const VECTOR &top_pos, const float side_len, const unsigned int color)
3D空間に立方体を描画する.立方体の上面の中心の座標から描画する.
void SetZBufferEnable()
デフォルトだと描画処理を書いた順に描画されるが, これをZバッファを使用して奥行きを考慮して描画するようにする. 毎フレーム実行する必要がある.
void InitDxlib3DSetting(const bool high_quality)
3D処理を行う上で必要な初期化処理をまとめたもの.
MATRIX ConvertToDxlibMat(const RotationMatrix3x3 &mat)
このプログラムで使用しているMatrixを, Dxlibの行列を示すMATRIXに変換する.
Definition dxlib_util.h:44
void DrawHexagon(const std::array< VECTOR, 6 > &vertex, const unsigned int color)
3D空間に六角形を描画する.
VECTOR ConvertToDxlibVec(const Vector3 &vec)
Dxlibの座標を示すVECTORと,このプログラムで使用しているVectorを変換する. ロボット座標系は右手座標系, Dxlibは左手座標系(工学は右手・ゲームライブラリは左手が多い)なのでyを...
Definition dxlib_util.h:35
void DrawHexagonalPrism(const std::array< VECTOR, 6 > &vertex, const float height, const unsigned int color)
3D空間に六角柱を描画する.
void DrawCube3D(const VECTOR &center_pos, const float side_len, const unsigned int color)
3D空間に立方体を描画する.
3次元の回転行列を表す構造体.
std::array< std::array< float, 3 >, 3 > element
3次元の位置ベクトルを表す構造体.
float x
ロボットの正面方向に正.
float z
ロボットの上向きに正.
float y
ロボットの左向きに正.