GaitGeneration by Graph Search
|
2次元の多角形を表す構造体. [詳解]
#include <math_polygon2.h>
公開メンバ関数 | |
constexpr | Polygon2 () |
Polygon2 (const std::vector< Vector2 > &vertex) | |
constexpr void | AddVertex (const Vector2 &v) |
頂点を追加する関数. | |
bool | AddVertexCheckForDuplicates (const Vector2 &v) |
頂点を追加する関数.他の頂点と重なっている場合は追加しない. | |
void | RemoveVertex (const int index) |
頂点を削除する関数.遅いので多用するべきではない. | |
constexpr void | RemoveLastVertex () |
1番最後の頂点を削除する関数. | |
constexpr void | Reset () |
多角形をリセットする関数. 頂点を削除して,頂点数を0にする. | |
constexpr int | GetVertexNum () const |
多角形の頂点数を返す関数. | |
constexpr Vector2 | GetVertex (const int i) const |
頂点の座標を返す関数. | |
constexpr std::optional< Vector2 > | GetVertexOpt (const int i) const |
頂点の座標を返す関数.std::optional を使っているので, 存在しない頂点を指定した場合は std::nullopt を返す. | |
constexpr float | GetMaxX () const |
頂点の中で最大のx座標を返す関数. | |
constexpr float | GetMinX () const |
頂点の中で最小のx座標を返す関数. | |
constexpr float | GetMaxY () const |
頂点の中で最大のy座標を返す関数. | |
constexpr float | GetMinY () const |
頂点の中で最小のy座標を返す関数. | |
bool | IsConvex () const |
多角形が凸かどうか調べる関数. | |
bool | IsInside (const Vector2 &point) const |
点が多角形の内部にあるかどうか調べる関数. 多角形が凸でない場合は正しく判定できない. | |
std::string | ToString () const |
多角形のデータを文字列で出力する | |
2次元の多角形を表す構造体.
頂点は反時計回り,或いは時計回りに並んでいる必要がある. そうでない場合はいくつかの関数が正常に動作しない.
また,頂点の数は最大でkMaxVertexNum個までしか登録できない. これは動作の高速化のために確保した配列のサイズを固定しているためである. この値を変更する場合は,コード中のkMaxVertexNumの値を変更する必要がある.
なお,コード中の max 関数,min関数については以下を参照.
math_polygon2.h の 38 行目に定義があります。
|
inlineconstexpr |
math_polygon2.h の 40 行目に定義があります。
|
explicit |
|
inlineconstexpr |
bool designlab::Polygon2::AddVertexCheckForDuplicates | ( | const Vector2 & | v | ) |
頂点を追加する関数.他の頂点と重なっている場合は追加しない.
[in] | v | 追加する頂点の座標. |
true | 追加できた, |
false | 追加できなかった. |
math_polygon2.cpp の 27 行目に定義があります。
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |
|
inlineconstexpr |
頂点の座標を返す関数.
[in] | i | 頂点のインデックス. |
math_polygon2.h の 103 行目に定義があります。
|
inlineconstexpr |
|
inlineconstexpr |
頂点の座標を返す関数.std::optional を使っているので, 存在しない頂点を指定した場合は std::nullopt を返す.
[in] | i | 頂点のインデックス. |
math_polygon2.h の 117 行目に定義があります。
bool designlab::Polygon2::IsConvex | ( | ) | const |
bool designlab::Polygon2::IsInside | ( | const Vector2 & | point | ) | const |
点が多角形の内部にあるかどうか調べる関数. 多角形が凸でない場合は正しく判定できない.
[in] | point | 調べる点 |
math_polygon2.cpp の 97 行目に定義があります。
|
inlineconstexpr |
void designlab::Polygon2::RemoveVertex | ( | const int | index | ) |
頂点を削除する関数.遅いので多用するべきではない.
[in] | index | 削除する頂点のインデックス. |
math_polygon2.cpp の 45 行目に定義があります。
|
inlineconstexpr |
多角形をリセットする関数.
頂点を削除して,頂点数を0にする.
math_polygon2.h の 87 行目に定義があります。
std::string designlab::Polygon2::ToString | ( | ) | const |